在这里插入代码片
窗口UI界面代码,命名为MainWindow.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'MainWindow1.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
import signal
from PyQt5.QtChart import QChartView,QChart,QLineSeries,QValueAxis
from PyQt5.QtWidgets import QCompleter
from PyQt5 import QtCore, QtGui, QtWidgets
#站点编号#
STADION_list = ['80407200','80612000','80700300','80503500','80710950','81413600','80708300','81408000','807R2701','80708100','807R2102','80457600','806D1304','81403000',
'805M0450','81415100','807F1600','807A0540','81414400','809J0710','804G3150','80704360','80704400','809J0610','81414200','807L0143','80518500','804G0500',
'807R1101','807F1605','806K2510','807R1710','81401700','806D1301','80513000','80515450','81404000','81411920','80707100','81407500','806R2404','804G0800',
'80410800','80610550','81414100','80711200','808J0120','806K9650','809J0520','809J0510','807R1102','81418900','814K4225','804A0100','807N1000','807F2600',
'80710600','804G1600','80700350','804L3013','802L1013','81414000','808C0030','808J0210','80410500','805B6850','808C5002','80407000','612C1005','804M0700',
'808C5010','804L3023','611C1040','808C1050','80811900','804M0450','80605001','814K9820','80505600','807F6505','611C1015','814K1930','81706250','806R2402',
'81424430','806R2405','807L5001','808C1055','808C1010','808J0110','804G4500','807R2101','807L4003','611C1050','611C1005','80413000','81413625','81419600',
'611C1035','80616300','809J0340','80746900','805G4000','805B6750','611C1060','81407000','80900150','80900050','805G3150','80613000','80812100','807L0013',
'804A0550','805G4150','808C5038','807L5003','807A0620','808C1015','81415000','80735800','805M0300','611C5005','808C1045','81418000','814K3100','611C1020',
'804M0550','817K2150','611C1055','807A0120','807A0520','61100150','814K9620','814K7165','804G2000','807L5023','808C1025','807L1103','80406000','61102620',
'81436600','808C5190','808C1100','807A0100','80607500','806K6920','612C1010','806R2401','807L2013','808C5005','807R1702','808C5034','808J0100','807L4013',
'807A0260','806K9235','814K1665','817K1940','806R1404','805M0350','805C0005','809J0330','817K4870','807L0133','804M0650','807A0580','804M0500','805C1035',
'809J0300','808C5170','809J0360','807R1708','807A0200','806K3760','806K5550','808C0015','806D0705','805M0050','806K0660','804A0200','809J0400','807R1103',
]
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(986, 667)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
MainWindow.setSizePolicy(sizePolicy)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
self.label_1 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(12)
self.label_1.setFont(font)
self.label_1.setObjectName("label_1")
self.gridLayout.addWidget(self.label_1, 3, 0, 1, 1)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.label_9 = QtWidgets.QLabel(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_9.sizePolicy().hasHeightForWidth())
self.label_9.setSizePolicy(sizePolicy)
self.label_9.setObjectName("label_9")
self.horizontalLayout.addWidget(self.label_9)
self.label_12 = QtWidgets.QLabel(self.centralwidget)
self.label_12.setObjectName("label_12")
self.horizontalLayout.addWidget(self.label_12)
self.gridLayout.addLayout(self.horizontalLayout, 4, 0, 1, 1)
self.Tab3 = QtWidgets.QTabWidget(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(12)
self.Tab3.setFont(font)
self.Tab3.setMouseTracking(False)
self.Tab3.setToolTip("")
self.Tab3.setToolTipDuration(0)
self.Tab3.setObjectName("Tab3")
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
self.gridLayout_2 = QtWidgets.QGridLayout(self.tab)
self.gridLayout_2.setObjectName("gridLayout_2")
self.pushButton_Download = QtWidgets.QPushButton(self.tab)
font = QtGui.QFont()
font.setPointSize(12)
self.pushButton_Download.setFont(font)
self.pushButton_Download.setObjectName("pushButton_Download")
self.gridLayout_2.addWidget(self.pushButton_Download, 3, 7, 1, 1)
self.label_4 = QtWidgets.QLabel(self.tab)
font = QtGui.QFont()
font.setPointSize(12)
self.label_4.setFont(font)
self.label_4.setToolTipDuration(0)
self.label_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.label_4.setObjectName("label_4")
self.gridLayout_2.addWidget(self.label_4, 2, 1, 1, 1)
self.label_3 = QtWidgets.QLabel(self.tab)
font = QtGui.QFont()
font.setPointSize(12)
self.label_3.setFont(font)
self.label_3.setToolTipDuration(0)
self.label_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.label_3.setObjectName("label_3")
self.gridLayout_2.addWidget(self.label_3, 2, 0, 1, 1)
self.comboBox_4 = QtWidgets.QComboBox(self.tab)
font = QtGui.QFont()
font.setPointSize(12)
self.comboBox_4.setFont(font)
self.comboBox_4.setObjectName("comboBox_4")
self.comboBox_4.addItem("")
self.comboBox_4.addItem("")
self.comboBox_4.addItem("")
self.comboBox_4.addItem("")
self.comboBox_4.addItem("")
self.comboBox_4.addItem("")
self.comboBox_4.addItem("")
self.comboBox_4.addItem("")
self.comboBox_4.addItem("")
self.comboBox_4.addItem("")
self.comboBox_4.addItem("")
self.comboBox_4.addItem("")
self.comboBox_4.addItem("")
self.comboBox_4.addItem("")
self.gridLayout_2.addWidget(self.comboBox_4, 3, 1, 1, 2)
self.lineEdit = QtWidgets.QLineEdit(self.tab)
font = QtGui.QFont()
font.setPointSize(12)
self.lineEdit.setFont(font)
self.lineEdit.setObjectName("lineEdit")
self.gridLayout_2.addWidget(self.lineEdit, 3, 3, 1, 2)
self.pushButton_Browser = QtWidgets.QPushButton(self.tab)
font = QtGui.QFont()
font.setPointSize(12)
self.pushButton_Browser.setFont(font)
self.pushButton_Browser.setObjectName("pushButton_Browser")
self.gridLayout_2.addWidget(self.pushButton_Browser, 3, 5, 1, 2)
self.label_5 = QtWidgets.QLabel(self.tab)
font = QtGui.QFont()
font.setPointSize(12)
self.label_5.setFont(font)
self.label_5.setToolTipDuration(0)
self.label_5.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.label_5.setObjectName("label_5")
self.gridLayout_2.addWidget(self.label_5, 2, 4, 1, 1)
self.comboBox_3 = QtWidgets.QComboBox(self.tab)
font = QtGui.QFont()
font.setPointSize(12)
self.comboBox_3.setFont(font)
self.comboBox_3.setObjectName("comboBox_3")
self.comboBox_3.addItem("")
self.comboBox_3.addItem("")
self.gridLayout_2.addWidget(self.comboBox_3, 3, 0, 1, 1)
self.comboBox_2 = QtWidgets.QComboBox(self.tab)
font = QtGui.QFont()
font.setPointSize(12)
self.comboBox_2.setFont(font)
self.comboBox_2.setToolTipDuration(0)
self.comboBox_2.setStatusTip("")
self.comboBox_2.setEditable(True)
self.comboBox_2.setObjectName("comboBox_2")
self.comboBox_2.addItem("")
self.comboBox_2.addItem("")
self.comboBox_2.addItem("")
lf.comboBox_2, 2, 5, 1, 2)
self.label_2 = QtWidgets.QLabel(self.tab)
font = QtGui.QFont()
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.gridLayout_2.addWidget(self.label_2, 0, 0, 1, 8)
self.comboBox = QtWidgets.QComboBox(self.tab)
font = QtGui.QFont()
font.setPointSize(12)
self.comboBox.setFont(font)
self.comboBox.setToolTipDuration(0)
self.comboBox.setEditable(True)
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.gridLayout_2.addWidget(self.comboBox, 2, 2, 1, 2)
self.tableView = QtWidgets.QTableView(self.tab)
self.tableView.setToolTip("")
self.tableView.setObjectName("tableView")
self.gridLayout_2.addWidget(self.tableView, 1, 0, 1, 8)
self.Tab3.addTab(self.tab, "数据预览与下载模块")
self.tab_2 = QtWidgets.QWidget()
self.tab_2.setObjectName("tab_2")
self.gridLayout_3 = QtWidgets.QGridLayout(self.tab_2)
self.gridLayout_3.setObjectName("gridLayout_3")
self.pushButton_Save = QtWidgets.QPushButton(self.tab_2)
self.pushButton_Save.setToolTip("插入行
")
self.pushButton_Save.setObjectName("pushButton_Save")
self.gridLayout_3.addWidget(self.pushButton_Save, 0, 1, 1, 1)
self.pushButton_Save_Another = QtWidgets.QPushButton(self.tab_2)
self.pushButton_Save_Another.setToolTip("另存文件
")
self.pushButton_Save_Another.setObjectName("pushButton_Save_Another")
self.gridLayout_3.addWidget(self.pushButton_Save_Another, 0, 2, 1, 1)
self.label_6 = QtWidgets.QLabel(self.tab_2)
font = QtGui.QFont()
font.setPointSize(10)
self.label_6.setFont(font)
self.label_6.setObjectName("label_6")
self.gridLayout_3.addWidget(self.label_6, 2, 0, 1, 2)
self.tableView_2 = QtWidgets.QTableView(self.tab_2)
self.tableView_2.setObjectName("tableView_2")
self.gridLayout_3.addWidget(self.tableView_2, 1, 0, 1, 9)
self.pushButton_Open = QtWidgets.QPushButton(self.tab_2)
font = QtGui.QFont()
font.setItalic(False)
font.setUnderline(False)
font.setKerning(True)
font.setStyleStrategy(QtGui.QFont.PreferDefault)
self.pushButton_Open.setFont(font)
self.pushButton_Open.setFocusPolicy(QtCore.Qt.NoFocus)
self.pushButton_Open.setToolTip("打开文件
")
self.pushButton_Open.setToolTipDuration(0)
self.pushButton_Open.setAutoDefault(True)
self.pushButton_Open.setObjectName("pushButton_Open")
self.gridLayout_3.addWidget(self.pushButton_Open, 0, 0, 1, 1)
self.label_8 = QtWidgets.QLabel(self.tab_2)
font = QtGui.QFont()
font.setPointSize(10)
self.label_8.setFont(font)
self.label_8.setObjectName("label_8")
self.gridLayout_3.addWidget(self.label_8, 2, 5, 1, 1)
self.label_7 = QtWidgets.QLabel(self.tab_2)
font = QtGui.QFont()
font.setPointSize(10)
self.label_7.setFont(font)
self.label_7.setObjectName("label_7")
self.gridLayout_3.addWidget(self.label_7, 2, 2, 1, 3)
self.label_8_1 = QtWidgets.QLabel(self.tab_2)
self.label_8_1.setObjectName("label_8_1")
self.gridLayout_3.addWidget(self.label_8_1, 2, 6, 1, 3)
self.Tab3.addTab(self.tab_2, "")
self.tab_4 = QtWidgets.QWidget()
self.tab_4.setObjectName("tab_4")
self.gridLayout_9 = QtWidgets.QGridLayout(self.tab_4)
self.gridLayout_9.setObjectName("gridLayout_9")
self.frame = QtWidgets.QFrame(self.tab_4)
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.gridLayout_4 = QtWidgets.QGridLayout(self.frame)
self.gridLayout_4.setObjectName("gridLayout_4")
self.chart = QChart()
self.chart.setTitle('操作方法:1、选择站点编号;2、点击需要显示的曲线类型。')
self.graphicsView = QChartView(self.frame)
self.graphicsView.setChart(self.chart)
self.graphicsView.setObjectName("graphicsView")
self.gridLayout_4.addWidget(self.graphicsView, 0, 0, 1, 1)
self.label_15 = QtWidgets.QLabel(self.frame)
self.label_15.setObjectName("label_15")
self.gridLayout_4.addWidget(self.label_15, 1, 0, 1, 1)
self.gridLayout_9.addWidget(self.frame, 0, 2, 5, 1)
self.groupBox = QtWidgets.QGroupBox(self.tab_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth())
self.groupBox.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(False)
font.setWeight(50)
self.groupBox.setFont(font)
self.groupBox.setObjectName("groupBox")
self.gridLayout_5 = QtWidgets.QGridLayout(self.groupBox)
self.gridLayout_5.setObjectName("gridLayout_5")
self.gridLayout_7 = QtWidgets.QGridLayout()
self.gridLayout_7.setSpacing(8)
self.gridLayout_7.setObjectName("gridLayout_7")
#待完善#
# self.push_Level_Flow = QtWidgets.QPushButton(self.groupBox)
# self.push_Level_Flow.setCheckable(False)
# self.push_Level_Flow.setObjectName("push_Level_Flow")
# self.push_Level_Flow.setDisabled(True)
# self.gridLayout_7.addWidget(self.push_Level_Flow, 4, 1, 1, 1)
#
self.label_13 = QtWidgets.QLabel(self.groupBox)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_13.sizePolicy().hasHeightForWidth())
self.label_13.setSizePolicy(sizePolicy)
self.label_13.setFrameShape(QtWidgets.QFrame.Box)
self.label_13.setObjectName("label_13")
self.gridLayout_7.addWidget(self.label_13, 1, 1, 1, 1)
self.push_Time_Level = QtWidgets.QPushButton(self.groupBox)
self.push_Time_Level.setCheckable(False)
self.push_Time_Level.setObjectName("push_Time_Level")
self.push_Time_Level.setDisabled(True)
self.gridLayout_7.addWidget(self.push_Time_Level, 4, 1, 1, 1)
self.line = QtWidgets.QFrame(self.groupBox)
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.gridLayout_7.addWidget(self.line, 3, 1, 1, 4)
self.comboBox_5 = QtWidgets.QComboBox(self.groupBox)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(60)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.comboBox_5.sizePolicy().hasHeightForWidth())
self.comboBox_5.setSizePolicy(sizePolicy)
self.comboBox_5.setEditable(True)
self.comboBox_5.setObjectName("comboBox_5")
self.comboBox_5.addItem("")
self.comboBox_5.addItem("")
self.comboBox_5.addItem("")
self.comboBox_5.addItem("")
self.gridLayout_7.addWidget(self.comboBox_5, 1, 2, 1, 3)
self.push_Time_Flow = QtWidgets.QPushButton(self.groupBox)
self.push_Time_Flow.setCheckable(False)
self.push_Time_Flow.setObjectName("push_Time_Flow")
self.push_Time_Flow.setDisabled(True)
self.gridLayout_7.addWidget(self.push_Time_Flow, 4, 2, 1, 1)
self.push_Three = QtWidgets.QPushButton(self.groupBox)
self.push_Three.setCheckable(False)
self.push_Three.setObjectName("push_Three")
self.push_Three.setDisabled(True)
self.gridLayout_7.addWidget(self.push_Three, 5, 1, 1, 4)
self.gridLayout_5.addLayout(self.gridLayout_7, 0, 0, 1, 1)
self.gridLayout_9.addWidget(self.groupBox, 0, 0, 1, 2)
self.groupBox_2 = QtWidgets.QGroupBox(self.tab_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_2.sizePolicy().hasHeightForWidth())
self.groupBox_2.setSizePolicy(sizePolicy)
self.groupBox_2.setObjectName("groupBox_2")
self.gridLayout_6 = QtWidgets.QGridLayout(self.groupBox_2)
self.gridLayout_6.setObjectName("gridLayout_6")
self.gridLayout_10 = QtWidgets.QGridLayout()
self.gridLayout_10.setObjectName("gridLayout_10")
self.label_11 = QtWidgets.QLabel(self.groupBox_2)
self.label_11.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.label_11.setObjectName("label_11")
self.gridLayout_10.addWidget(self.label_11, 4, 0, 1, 1)
self.lineEdit_3 = QtWidgets.QLineEdit(self.groupBox_2)
self.lineEdit_3.setEnabled(True)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lineEdit_3.sizePolicy().hasHeightForWidth())
self.lineEdit_3.setSizePolicy(sizePolicy)
self.lineEdit_3.setObjectName("lineEdit_3")
self.gridLayout_10.addWidget(self.lineEdit_3, 4, 1, 1, 1)
self.label_10 = QtWidgets.QLabel(self.groupBox_2)
font = QtGui.QFont()
font.setPointSize(12)
self.label_10.setFont(font)
self.label_10.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.label_10.setObjectName("label_10")
self.gridLayout_10.addWidget(self.label_10, 0, 0, 2, 1)
self.pushButton_Query = QtWidgets.QPushButton(self.groupBox_2)
self.pushButton_Query.setCheckable(False)
self.pushButton_Query.setObjectName("pushButton_Query")
self.gridLayout_10.addWidget(self.pushButton_Query, 2, 0, 1, 2)
self.lineEdit_2 = QtWidgets.QLineEdit(self.groupBox_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lineEdit_2.sizePolicy().hasHeightForWidth())
self.lineEdit_2.setSizePolicy(sizePolicy)
self.lineEdit_2.setObjectName("lineEdit_2")
self.gridLayout_10.addWidget(self.lineEdit_2, 0, 1, 2, 1)
self.gridLayout_6.addLayout(self.gridLayout_10, 0, 1, 1, 1)
self.gridLayout_9.addWidget(self.groupBox_2, 2, 0, 1, 1)
self.groupBox_Weather = QtWidgets.QGroupBox(self.tab_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_Weather.sizePolicy().hasHeightForWidth())
self.groupBox_Weather.setSizePolicy(sizePolicy)
self.groupBox_Weather.setObjectName("groupBox_Weather")
self.gridLayout_8 = QtWidgets.QGridLayout(self.groupBox_Weather)
self.gridLayout_8.setObjectName("gridLayout_8")
self.gridLayout_11 = QtWidgets.QGridLayout()
self.gridLayout_11.setObjectName("gridLayout_11")
self.pushButton_2 = QtWidgets.QPushButton(self.groupBox_Weather)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton_2.sizePolicy().hasHeightForWidth())
self.pushButton_2.setSizePolicy(sizePolicy)
self.pushButton_2.setObjectName("pushButton_2")
self.gridLayout_11.addWidget(self.pushButton_2, 0, 1, 1, 1)
self.comboBox_City = QtWidgets.QComboBox(self.groupBox_Weather)
self.comboBox_City.setObjectName("comboBox_City")
self.gridLayout_11.addWidget(self.comboBox_City, 0, 0, 1, 1)
self.textBrowser = QtWidgets.QTextBrowser(self.groupBox_Weather)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(60)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.textBrowser.sizePolicy().hasHeightForWidth())
self.textBrowser.setSizePolicy(sizePolicy)
self.textBrowser.setObjectName("textBrowser")
self.gridLayout_11.addWidget(self.textBrowser, 1, 0, 1, 2)
self.gridLayout_8.addLayout(self.gridLayout_11, 2, 0, 1, 1)
self.gridLayout_9.addWidget(self.groupBox_Weather, 3, 0, 2, 2)
self.Tab3.addTab(self.tab_4, "")
self.gridLayout.addWidget(self.Tab3, 1, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 986, 23))
self.menubar.setObjectName("menubar")
self.menu = QtWidgets.QMenu(self.menubar)
self.menu.setObjectName("menu")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.action = QtWidgets.QAction(MainWindow)
self.action.setObjectName("action")
self.action_3 = QtWidgets.QAction(MainWindow)
self.action_3.setObjectName("action_3")
self.actiond = QtWidgets.QAction(MainWindow)
self.actiond.setObjectName("actiond")
self.action_6 = QtWidgets.QAction(MainWindow)
self.action_6.setObjectName("action_6")
self.action_8 = QtWidgets.QAction(MainWindow)
self.action_8.setObjectName("action_8")
self.action_10 = QtWidgets.QAction(MainWindow)
self.action_10.setObjectName("action_10")
self.action_12 = QtWidgets.QAction(MainWindow)
self.action_12.setObjectName("action_12")
self.menu.addSeparator()
self.menu.addAction(self.action_3)
self.menu.addSeparator()
self.menu.addAction(self.action_8)
self.menu.addSeparator()
self.menu.addAction(self.action_10)
self.menu.addSeparator()
self.menu.addAction(self.action_12)
self.menubar.addAction(self.menu.menuAction())
##构建数据预存框架##
self.plainTextEdit = QtWidgets.QPlainTextEdit()
self.plainTextEdit.setLineWrapMode(QtWidgets.QPlainTextEdit.NoWrap)
self.plainTextEdit.setObjectName("plainTextEdit")
self.retranslateUi(MainWindow)
self.Tab3.setCurrentIndex(0)
self.action_3.triggered.connect(MainWindow.action_use)
self.action_8.triggered.connect(MainWindow.action_open)
self.action_10.triggered.connect(MainWindow.action_up)
self.action_12.triggered.connect(MainWindow.action_devote)
self.pushButton_Browser.clicked.connect(MainWindow.pushButton_Browser)
self.pushButton_Download.clicked.connect(MainWindow.pushButton_Download)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
self.init_comboBox_5()
self.init_comboBox_5_1()
# 设置水位最小值自动填充
def init_comboBox_5(self):
self.completer = QCompleter(STADION_list)
self.comboBox_5.setCompleter(self.completer)
# 增加选项元素
def init_comboBox_5_1(self):
for i in range(len(STADION_list)):
self.comboBox_5.addItem(STADION_list[i])
self.comboBox_5.setCurrentIndex(1)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "金鳞八桂水文数据采集平台(公开版)"))
self.label.setText(_translate("MainWindow", "桂林理工大学 水文团队研发
"))
self.label_1.setText(_translate("MainWindow", "特别致谢广西水文水资源局,仅供学习,请勿商用!"))
self.label_9.setText(_translate("MainWindow", "当前系统时间:"))
self.label_12.setText(_translate("MainWindow", "系统状态:"))
self.pushButton_Download.setText(_translate("MainWindow", " 下载"))
self.label_4.setText(_translate("MainWindow", " 最低水位值"))
self.label_3.setText(_translate("MainWindow", " 水位区间:"))
self.comboBox_4.setToolTip(_translate("MainWindow", "数据区域
"))
self.comboBox_4.setItemText(0, _translate("MainWindow", "广西水文水资源局"))
self.comboBox_4.setItemText(1, _translate("MainWindow", "南宁市水文水资源局"))
self.comboBox_4.setItemText(2, _translate("MainWindow", "柳州市水文水资源局"))
self.comboBox_4.setItemText(3, _translate("MainWindow", "桂林市水文水资源局"))
self.comboBox_4.setItemText(4, _translate("MainWindow", "梧州市水文水资源局"))
self.comboBox_4.setItemText(5, _translate("MainWindow", "玉林市水文水资源局"))
self.comboBox_4.setItemText(6, _translate("MainWindow", "百色市水文水资源局"))
self.comboBox_4.setItemText(7, _translate("MainWindow", "河池市水文水资源局"))
self.comboBox_4.setItemText(8, _translate("MainWindow", "贵港市水文水资源局"))
self.comboBox_4.setItemText(9, _translate("MainWindow", "崇左市水文水资源局"))
self.comboBox_4.setItemText(10, _translate("MainWindow", "来宾市水文水资源局"))
self.comboBox_4.setItemText(11, _translate("MainWindow", "贺州市水文水资源局"))
self.comboBox_4.setItemText(12, _translate("MainWindow", "广西沿海水文水资源局"))
self.comboBox_4.setItemText(13, _translate("MainWindow", "云端数据下载"))
self.lineEdit.setText(_translate("MainWindow", ">>>储存路径"))
self.pushButton_Browser.setToolTip(_translate("MainWindow", "浏览位置
"))
self.pushButton_Browser.setText(_translate("MainWindow", " 浏览位置"))
self.label_5.setText(_translate("MainWindow", " 最高水位值"))
self.comboBox_3.setToolTip(_translate("MainWindow", "数据预览/下载
"))
self.comboBox_3.setItemText(0, _translate("MainWindow", "数据预览"))
self.comboBox_3.setItemText(1, _translate("MainWindow", "数据下载"))
self.comboBox_2.setItemText(0, _translate("MainWindow", "0"))
self.comboBox_2.setItemText(1, _translate("MainWindow", "1"))
self.comboBox_2.setItemText(2, _translate("MainWindow", "2"))
self
self.label_2.setText(_translate("MainWindow", " 实时数据预览
"))
self.comboBox.setItemText(0, _translate("MainWindow", "0"))
self.comboBox.setItemText(1, _translate("MainWindow", "-1"))
self.comboBox.setItemText(2, _translate("MainWindow", "-2"))
self.pushButton_Save.setText(_translate("MainWindow", "保存"))
self.pushButton_Save_Another.setText(_translate("MainWindow", " 另存为"))
self.label_6.setText(_translate("MainWindow", "当前单元格:"))
self.pushButton_Open.setText(_translate("MainWindow", " 打开"))
self.label_8.setText(_translate("MainWindow", "当前文件路径:"))
self.label_7.setText(_translate("MainWindow", "单元格内容:"))
self.label_8_1.setText(_translate("MainWindow", ""))
self.Tab3.setTabText(self.Tab3.indexOf(self.tab_2), _translate("MainWindow", "文件操作模块"))
self.label_15.setText(_translate("MainWindow", "数据时间段:"))
self.groupBox.setTitle(_translate("MainWindow", "图表绘制"))
# self.push_Level_Flow.setText(_translate("MainWindow", "水位与流量"))
self.label_13.setText(_translate("MainWindow", "站点编号:
"))
self.push_Time_Level.setText(_translate("MainWindow", "时间与水位"))
self.comboBox_5.setItemText(0, _translate("MainWindow", "808C0030"))
self.comboBox_5.setItemText(1, _translate("MainWindow", "808C0030"))
self.comboBox_5.setItemText(2, _translate("MainWindow", "611C5005"))
self.comboBox_5.setItemText(3, _translate("MainWindow", "80515450"))
self.push_Time_Flow.setText(_translate("MainWindow", "时间与流量"))
self.push_Three.setText(_translate("MainWindow","双曲线一图"))
self.groupBox_2.setTitle(_translate("MainWindow", "工具箱"))
self.label_11.setText(_translate("MainWindow", "查询结果:"))
self.label_10.setText(_translate("MainWindow", "输入站点名称:
"))
self.pushButton_Query.setText(_translate("MainWindow", "点击查询"))
self.groupBox_Weather.setTitle(_translate("MainWindow", "天气查询"))
self.pushButton_2.setText(_translate("MainWindow", "包含水文站点"))
self.Tab3.setTabText(self.Tab3.indexOf(self.tab_4), _translate("MainWindow", " 拓展功能模块"))
self.menu.setTitle(_translate("MainWindow", "关于"))
self.action.setText(_translate("MainWindow", "打开"))
self.action.setToolTip(_translate("MainWindow", "Ctrl+O"))
self.action.setShortcut(_translate("MainWindow", "Ctrl+O"))
self.action_3.setText(_translate("MainWindow", "使用说明"))
self.action_8.setText(_translate("MainWindow", "开源代码"))
self.action_10.setText(_translate("MainWindow", "检查更新"))
self.action_12.setText(_translate("MainWindow", "爱心赞助"))
from PyQt5.QtChart import QChartView
在这里插入代码片
代码运行部分,命名为APPMain.py
import sys,re,requests,time,threading,csv,os,webbrowser
from lxml.html import etree
from datetime import datetime
from PyQt5.QtWidgets import QMainWindow,QApplication,QAbstractItemView,QFileDialog
from PyQt5.QtGui import QStandardItemModel,QStandardItem
from MainWindow import Ui_MainWindow
from use_label import Ui_MainWindow_use
from PyQt5 import QtGui,QtCore
from multiprocess.dummy import Pool
from PyQt5.QtCore import pyqtSlot,QItemSelectionModel,Qt
import win32con,win32api
from PyQt5.QtChart import QChart,QLineSeries,QValueAxis
#名称匹配站点编号#
ZD_NUMBER_list = {'甲篆':'80407200','容县':'80612000','邕宁':'80700300','柳城':'80503500','田林':'80710950','钦州(闸上)':'81413600','田东':'80708300','清湾江':'81408000',
'樟木':'807R2701','百色(三)':'80708100','木根':'807R2102','大桥':'80457600','岭景':'806D1304','玉林':'81403000','五里':'805M0450','茅岭':'81415100',
'进结':'807F1600','布泉':'807A0540','大榄江':'81414400','桂岭':'809J0710','思练':'804G3150','平福':'80704360','那派':'80704400','里松镇':'809J0610',
'尖山涠':'81414200','那满':'807L0143','金秀':'80518500','都乐':'804G0500','石龙':'807R1101','天等':'807F1605','山围':'806K2510','马草江':'807R1710',
'天马':'807A0100','太平':'80607500','杨村':'806K6920','瓜里':'612C1010','大坡':'806R2401','爱堂':'807L2013','斧子口水库(坝下)':'808C5005','桥圩':'807R1702',
'旱禾坪':'808C5034','朝东':'808J0100','马隘':'807L4013','黎屋':'807A0260','石头':'806K9235','蕉林':'814K1665','大坝':'817K1940','思旺':'806R1404','六坡':'805M0350',
'平等':'805C0005','马峰街':'809J0330','清湖':'817K4870','那音':'807L0133','下烈':'804M0650','那马':'807A0580','巴马':'804M0500','和平':'805C1035','东庄':'809J0300',
'两合(水位)':'808C5170','仁义':'809J0360','龙扶':'807R1708','保盖':'807A0200','山心':'806K3760','新荣':'806K5550','兴隆':'808C0015','新地':'806D0705','北香':'805M0050',
'新丰':'806K0660','马山':'804A0200','金腰口':'809J0400','良和':'807R1103','坪岭':'80516000','连田':'806R1105','榃朴':'807N1050','同德':'807L5033','会仙':'808C0005',
'桃花江':'80809800','同老':'804L3003','利周':'802L1023','凤凰':'804G5150','文明':'611C1025','杆洞':'805B1250','白寺圩':'805B7550','印茶':'807L2003','江城':'807L2033',
'五塘':'807A0600','同和':'806R2407','中东':'807F7605','平乐':'80804500','灵川':'808C0020','龙坪村':'808C1040','灌阳':'61102700','赖亭':'804M0200','宛田':'805C0015',
'吴家':'808C1035','花贡':'807L1101','坤平':'807L0113','黎村':'806K6450','杨梅':'80616000','大洲':'806R2403','小溶江水库(坝下)':'808C5017','三里':'80719800',
'富藏':'806R1402','平政':'806K5300','长安':'80502500','漠川':'611C1010','锣圩':'807A0140','麻垌(二)':'807R1104','莲花':'808C1080','那隆':'81413020','江下':'814K7175',
'陆川城区':'81706220','坑坪':'808J0230','三街':'808C5018','门等':'808C1085','隆林(二)':'80215100','金田':'806R1104','德隆':'904L8003','文地':'81706255','灵山':'81412900',
'高浪':'805M1000','水口州':'809J0320','修仁':'80811800','双和':'80813000','滩营':'81414900','石南':'814K7181','逻楼':'804L1013','穿山':'804B1550','六麻':'806K0640',
'南康':'81401500','潮田':'80811000','大羊角':'805M0850','龙潭':'814K1920','沙陂':'817K5940','堡里':'805C1065','流河':'805M0700','灵渠':'80807000','富罗(二)':'80818000',
'大坝头':'809J0310','大化':'80606500','大云':'805B4550','良垌':'806D0602','九圩':'804M0900','北市':'80759330','北流':'80610700','弄状':'807F7505','西塘':'81410500',
'河步(二)':'80619500','驯乐':'805M0150','百合':'904L8033','那梭':'81418700','张黄':'81411350','大圩':'808C0010','龙潭':'808C1020','洞弄':'807L0023','卡马塘':'805B1280',
'福绵':'814K7171','木头滩':'81417500','马坪':'805G3600','罗富':'80405000','四塘':'805C0020','江口':'805C1045','官成':'806R1406','思怀':'80718900','劳村':'80817100',
'满坡':'807R1107','拉若':'805M0600','东平':'81432740','大鹏':'806R1401','南溪山':'808C1005','九屋':'808C5022','张家镇':'808C0035','车河':'804M0750','砦牙':'804M0400',
'都安县城':'80408900','八南':'805M2150','桂平新塘':'807R1105','大平山':'81426200','扶新':'81722400','板城':'81414500','四把':'805M0650','逻西':'802L1003',
'安东':'804G3300','西山':'611C1045','下录':'807F3600','陈村':'807R1701','华石':'81417450','磨里':'804L1001','林芝':'804M0050','镇龙':'80717900','凤山':'81431800',
'沙田':'814K9510','嘉会':'808C1070','古障':'802L1101','高车':'806K2500','大洋坪':'805B7950','念村':'808C1030','那坡县城':'807L8001','桑林':'808C5024',
'川江水库(坝下)':'808C5013','文市':'611C1030','回龙':'804G5700','咸水口':'612C1015','黄练':'807R1706','大溶江':'80801000','马安':'805C1075','荔浦':'80812000',
'楞仲':'807A0220','启文':'807L6021','江口':'805M0800','白石':'805C1005','德保':'80733700','东场':'81412200','玉洪':'804L9001','北更':'804G0200','董家堰':'611C5004',
'亚山':'814K9610','马坡':'81428500','乐江':'805C1040','三江':'808C1090','潭下':'808C5205','渠坤':'80704350','江宁':'81436800','宁潭':'817K5200','良凤江':'807A0160',
'信都(三)':'80900300','博白':'81405000','中里':'80519300','古偿':'805B7400','龙文':'806K3910','三门':'80506000','坝沙':'807F7500','勒竹':'806D1303','江底':'805C1015',
'府城':'807A0080','那蒙':'81414700','荣华':'80712400','梅溪':'612C1020','米场':'814K7230','旧州':'81413040','三隆':'81413030','乌石':'817K2240','肖家村':'808C5026',
'在久':'804M0850','长歧':'81417000','藤县':'80114400','贺街镇':'809J0530','福成':'81401600','四排':'80517000','东华':'806R1405','钟山县城':'80900130','上思':'80703300',
'者隘':'802L7003','平洞':'804G4300','罗秀':'80517600','龙川':'807L0003','大江口':'80718400','岑溪':'80618000','高州':'808C1075','白云':'805B3050','肯研':'805M0100',
'百都':'904L8013','八江':'805B2750','岜蒙':'807L5013','沱江':'807A0240','张家':'805C1030','下庙湾':'611C5006','恭城':'80814500','百乐':'802L6003','寻鼓湾':'806D1302',
'邹圩':'80414000','下雷':'807F2605','东乡':'805G4300','水汶':'806D0601','扁牙':'802L7001','伶站':'807L5043','平安':'808C0025','回龙镇':'808J0220','龙虎':'808C1060',
'林溪':'805B2650','两江(三)':'80512450','三滩':'814K7000','资源':'61203200','那拔':'804L0123','桂林':'80802300','丘里':'805B2850','雅瑶':'805B4251','白石水':'81411750',
'英竹':'80713000','潞城':'807L6003','乔建':'807A0020','沙梨':'802L7013','南义':'80604000','文利':'81411800','小董':'81414600','合江':'81410000','大河':'81418950',
'满家':'808C5008','水晏':'80609500','伯劳':'81411950','通怀':'807L4023','加里':'804M0150','大洋圩':'807R1106','天河':'80511500','香粉':'805B4780','百寿':'805C1055',
'下山':'807R1707','金鸡(二)':'80614000','水鸣':'814K6000','永安':'81431200','深渡':'808C5014','丁当':'807A0060','彩村':'804G3750','三堡':'806D0603','玉凤':'804L0111',
'同贡':'804M0350','垌心':'806R1101','红泥':'807R1709','新桥':'814K7220','牙寨':'805C1010','露圩':'80717000','龙头':'804M0800','缸瓦窑':'81413640','三防':'805B4501',
'草坪':'808C5240','昭平':'80805000','中平':'80517500','紫荆':'806R2101','融水':'80503000','粉屯':'807L6011','兴坪':'80802500','穿洞':'804M0100','三合':'81411450',
'武利':'81411550','崇左那隆':'807F4500','勒黄':'80505300','拱洞':'805B2150','中渡':'80516600','驮栏':'807L3013','陆川':'817K2230','海渊':'807F6605',
'沙子(水位)':'808C1065','新化':'804L1003','板榄':'805B4151','同乐':'805B2450','屯朝':'805M0550','瓢里':'805C1020','常乐':'81406000','中直':'81411850',
'陈塘':'806D1911','常星':'804L3001','文头岭':'807R1704','马练':'806R2406','旧州':'802L6013','南渡':'80617000','榄圩':'807F2615','高山':'807R1703','朔良':'804L2003','大伦':'817K2900',
'国安':'806R1403','六板水库':'807F4510','大新':'80705600','柳州':'80504000','富乐':'80506800','凌孔':'807F2610','沟港':'81412150','自良':'80649200','者苗':'807L6001','大宁':'809J0350',
'磨盘山码头':'808C5020','环江东兴':'805M0750','客兰':'807F7615','大业':'806D1600','于家':'808C5028','头塘':'807L0103','湖润':'807L5011','夏郢':'808D1100','钦州(闸下)':'81413601','大直':'81414800',
'阳朔':'80804000','百林':'80408000','拉时':'804M0300','石门':'805B8201','猫街':'80212300','新江':'807A0180','龙江':'805C1060','苏桥':'805C0010','介廷':'807L6013','西平':'807L1113','环江':'80511200','那岸':'80704800',
'坡朗坪':'81412000','周家岭':'805C1050','南宁(三)':'80700200','汪庄':'807F7610','扶绥':'80702600','古宾':'805M0200','怀群':'805M0400','泗香':'805B4380','驮卢':'807F4600','京南(坝下二)':'80805600','金城江':'80510110',
'全州(二)':'61100700','定安(三)':'80707430','岜盆':'807F7600','东泉':'805B5750','板祝':'807F6600','凤梧':'80408500','陆屋':'81413000','大将':'805B4351','良寨':'805B1650','良丰':'80810500','石寨':'806K6910','岭脚':'805C1070',
}
#站点编号#
STADION_list = ['80407200','80612000','80700300','80503500','80710950','81413600','80708300','81408000','807R2701','80708100','807R2102','80457600','806D1304','81403000',
'805M0450','81415100','807F1600','807A0540','81414400','809J0710','804G3150','80704360','80704400','809J0610','81414200','807L0143','80518500','804G0500',
'807R1101','807F1605','806K2510','807R1710','81401700','806D1301','80513000','80515450','81404000','81411920','80707100','81407500','806R2404','804G0800',
'80410800','80610550','81414100','80711200','808J0120','806K9650','809J0520','809J0510','807R1102','81418900','814K4225','804A0100','807N1000','807F2600',
'80710600','804G1600','80700350','804L3013','802L1013','81414000','808C0030','808J0210','80410500','805B6850','808C5002','80407000','612C1005','804M0700',
'808C5010','804L3023','611C1040','808C1050','80811900','804M0450','80605001','814K9820','80505600','807F6505','611C1015','814K1930','81706250','806R2402',
'81424430','806R2405','807L5001','808C1055','808C1010','808J0110','804G4500','807R2101','807L4003','611C1050','611C1005','80413000','81413625','81419600',
'611C1035','80616300','809J0340','80746900','805G4000','805B6750','611C1060','81407000','80900150','80900050','805G3150','80613000','80812100','807L0013',
'804A0550','805G4150','808C5038','807L5003','807A0620','808C1015','81415000','80735800','805M0300','611C5005','808C1045','81418000','814K3100','611C1020',
'804M0550','817K2150','611C1055','807A0120','807A0520','61100150','814K9620','814K7165','804G2000','807L5023','808C1025','807L1103','80406000','61102620',
'81436600','808C5190','808C1100','807A0100','80607500','806K6920','612C1010','806R2401','807L2013','808C5005','807R1702','808C5034','808J0100','807L4013',
'807A0260','806K9235','814K1665','817K1940','806R1404','805M0350','805C0005','809J0330','817K4870','807L0133','804M0650','807A0580','804M0500','805C1035',
'809J0300','808C5170','809J0360','807R1708','807A0200','806K3760','806K5550','808C0015','806D0705','805M0050','806K0660','804A0200','809J0400','807R1103',
'80516000','806R1105','807N1050','807L5033','808C0005','80809800','804L3003','802L1023','804G5150','611C1025','805B1250','805B7550','807L2003','807L2033',
'807A0600','806R2407','807F7605','80804500','808C0020','808C1040','61102700','804M0200','805C0015','808C1035','807L1101','807L0113','806K6450','80616000',
'806R2403','808C5017','80719800','806R1402','806K5300','80502500','611C1010','807A0140','807R1104','808C1080','81413020','814K7175','81706220','808J0230',
'80900300','81405000','80519300','805B7400','806K3910','80506000','807F7500','806D1303','805C1015','807A0080','81414700','80712400','612C1020','814K7230',
'81413040','81413030','817K2240','808C5026','804M0850','81417000','80114400','809J0530','81401600','80517000','806R1405','80900130','80703300','802L7003',
'804G4300','80517600','807L0003','80718400','80618000','808C1075','805B3050','805M0100','904L8013','805B2750','807L5013','807A0240','805C1030','611C5006',
'80814500','802L6003','806D1302','80414000','807F2605','805G4300','806D0601','802L7001','807L5043','808C0025','808J0220','808C1060','805B2650','80512450',
'814K7000','61203200','804L0123','80802300','805B2850','805B4251','81411750','80713000','807L6003','807A0020','802L7013','80604000','81411800','81414600',
'81410000','81418950','808C5008','80609500','81411950','807L4023','804M0150','807R1106','80511500','805B4780','805C1055','807R1707','80614000','814K6000',
'81431200','808C5014','807A0060','804G3750','806D0603','804L0111','804M0350','806R1101','807R1709','814K7220','805C1010','80717000','804M0800','81413640',
'805B4501','808C5240','80805000','80517500','806R2101','80503000','807L6011','80802500','804M0100','81411450','81411550','807F4500','80505300','805B2150',
'80516600','807L3013','817K2230','807F6605','808C1065','804L1003','805B4151','805B2450','805M0550','805C1020','81406000','81411850','806D1911','804L3001',
]
#站名匹配#
ZD_list = ['甲篆','容县','邕宁','柳城','田林','钦州(闸上)','田东','清湾江','樟木','百色(三)','木根','大桥','岭景','玉林','五里','茅岭','进结','布泉','大榄江','桂岭','思练','平福','那派','里松镇','尖山涠','那满','金秀','都乐','石龙','天等','山围','马草江','合浦','黄沙','永福(洛清江)','永福(西河)','横江','白鹤歧','八达','党江',
'大安','范团','凌王','隆盛','钦南','凌云(泗城)','红花镇','县底','沙子坪','麦岭街','官桥','江平','六江','杨树','沙坪','弄堪','那坡','古麦','峦城','海城','幼平','钦州','马田','竹山','内联','怀洪','华江','凤山','枫木','大兴','洞上','乐圩','界塘','洋石','荔浦城区','武篆','六陈(渠道)','沙湖','古宜','桐棉','凤凰嘴','白沙',''
'文官(三)','寺面','龙安','大新','新甲','栗木','灵田','文竹坪','蒙村','中沙','那甲','才湾','长亭江','上林(二)',
'沟口','那良','畔田','罗江','新路','靖西','禄新','柳江','宜湘河','总江口','贺州','富阳','水晶','象棋','花篢','泮水','狮螺','新龙','龙岩门','地州','四塘','江村','黄屋屯','平果','东江','五里峡渠道','马岭','防城','双凤','安和','上冠','六靖','宁家','双桥','罗兴','兴安','黄凌','小平山','北泗','坡豆','马鹿屯','那佐','绿兰',
'龙水(二)','那林','黄梅(水文)','同安','天马','太平','杨村','瓜里','大坡','爱堂','斧子口水库(坝下)','桥圩','旱禾坪','朝东','马隘','黎屋','石头','蕉林','大坝','思旺','六坡','平等','马峰街','清湖','那音','下烈','那马','巴马','和平','东庄','两合(水位)','仁义','龙扶','保盖','山心','新荣','兴隆','新地','北香','新丰',
'马山','金腰口','良和','坪岭','连田','榃朴','同德','会仙','桃花江','同老','利周','凤凰','文明','杆洞','白寺圩','印茶','江城','五塘','同和','中东','平乐','灵川','龙坪村','灌阳','赖亭','宛田','吴家','花贡','坤平','黎村','杨梅','大洲','小溶江水库(坝下)','三里','富藏','平政','长安','漠川','锣圩','麻垌(二)','莲花','那隆','江下',
'陆川城区','坑坪','三街','门等','隆林(二)','金田','德隆','文地','灵山','高浪','水口州','修仁','双和','滩营','石南','逻楼','穿山','六麻','南康','潮田','大羊角','龙潭','沙陂','堡里','流河','灵渠','富罗(二)','大坝头','大化','大云','良垌','九圩','北市','北流','弄状','西塘','河步(二)','驯乐','百合','那梭','张黄','大圩','龙潭',
]
global Url
Url = 0
global filename
filename = ''
class QmyWindow(QMainWindow):
def __init__(self):
super(QmyWindow,self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
##===预览表====##
self.model = QtGui.QStandardItemModel(self.ui.tableView)
self.model.setColumnCount(9)
self.model.setRowCount(50)
self.ui.tableView.verticalHeader().setDefaultSectionSize(22)
self.ui.tableView.setAlternatingRowColors(True) # 交替行颜色
self.model.setHeaderData(0, QtCore.Qt.Horizontal, ("站点编号"))# 设置表头
self.model.setHeaderData(1, QtCore.Qt.Horizontal, ("站名"))
self.model.setHeaderData(2, QtCore.Qt.Horizontal, ("河名"))
self.model.setHeaderData(3, QtCore.Qt.Horizontal, ("水位(m)"))
self.model.setHeaderData(4, QtCore.Qt.Horizontal, ("流量(m3/s)"))
self.model.setHeaderData(5, QtCore.Qt.Horizontal, ("超警(旱)"))
self.model.setHeaderData(6, QtCore.Qt.Horizontal, ("涨幅(m)"))
self.model.setHeaderData(7, QtCore.Qt.Horizontal, ("涨势"))
self.model.setHeaderData(8, QtCore.Qt.Horizontal, ("时间"))
self.ui.tableView.setModel(self.model)
##====操作表====##
self.ColCount = 9 # 列数 9#
self.itemModel = QStandardItemModel(50, self.ColCount, self)
self.selectModel = QItemSelectionModel(self.itemModel)
self.selectModel.currentChanged.connect(self.do_curChanged_2)
self.lastColumnFlage = (Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
self.ui.tableView_2.setModel(self.itemModel)
self.ui.tableView_2.setSelectionModel(self.selectModel)
oneOrMore = QAbstractItemView.ExtendedSelection
self.ui.tableView_2.setSelectionMode(oneOrMore)
itemOrRow = QAbstractItemView.SelectItems
self.ui.tableView_2.setSelectionBehavior(itemOrRow)
self.ui.tableView_2.verticalHeader().setDefaultSectionSize(22)
self.ui.tableView_2.setAlternatingRowColors(True) # 交替行颜色
# self.ui.tableView_2.setEnabled(False) # 先禁用tableView
##定义独立线程二##
def thead2(num):
print(Url)
Apple = True
ii = 0
iii = 0
while False and Apple:
time.sleep(0.5)
iii +=1
if Url != 0:
station_number_list = []
station_name_list = []
station_river_list = []
station_time0_list = []
station_level_list = []
station_flow_list = []
station_over_list = []
station_increase_list = []
station_trend_list = []
# print(b, c)
City_name_1 = re.findall('selected=(.*?)option>', Url, re.S)[0]
City_name = re.findall('">(.*?)', City_name_1, re.S)[0]
print(City_name)
# 先获取大范围区间#
html_url = re.findall(' , Url, re.S)
# 获取(station_number)#
station_number = re.findall("toShowStinfonModle\(\'(.*?)\'", html_url[0], re.S) # 1、站点编号#
# 获取(station_name)
station_name = re.findall(';">(.*?)', html_url[0], re.S) # 站名#
# 分别获取station_river、station_time、station_level、station_flow、station_over、station_increase、station_trend#
All_list = re.findall('style="color:black">(.*?)', html_url[0],
re.S) # 站点的河名、发布时间、水位、流量、超预警水位、趋势#
for i in range(0, len(All_list), 8):
a = int(i / 8)
# print(a,i)
# print(c,abs(float(d)),b)
station_number_list.append(station_number[a])
station_name_list.append(re.findall('\S*\S', station_name[a])[0]) # 2、站名#
station_river_list.append(re.findall('\S*\S', All_list[i + 1])[0]) # 3、河名#
station_time0_list.append(All_list[i + 2]) # 9、时间
station_level_list.append(All_list[i + 3].replace(' ', '')) # 4、水位
station_flow_list.append(All_list[i + 4].replace(' ', '')) # 5、流量
station_over_list.append(All_list[i + 5].replace(' ', '')) # 6、超警(旱)#
station_increase_list.append(All_list[i + 6].replace(' ', '')) # 7、涨幅#
station_trend_list.append(All_list[i + 7].replace(' ', '')) # 8、涨势#
self.model.setRowCount(len(station_number_list))
for ii in range(9):
if ii == 0:
for j in range(len(station_number_list)):
item = QStandardItem(station_number_list[j])
self.model.setItem(j, ii, item)
elif ii == 1:
for j in range(len(station_number_list)):
item = QStandardItem(station_name_list[j])
self.model.setItem(j, ii, item)
elif ii == 2:
for j in range(len(station_number_list)):
item = QStandardItem(station_river_list[j])
self.model.setItem(j, ii, item)
elif ii == 3:
for j in range(len(station_number_list)):
item = QStandardItem(station_level_list[j])
self.model.setItem(j, ii, item)
elif ii == 4:
for j in range(len(station_number_list)):
item = QStandardItem(station_flow_list[j])
self.model.setItem(j, ii, item)
elif ii == 5:
for j in range(len(station_number_list)):
item = QStandardItem(station_over_list[j])
self.model.setItem(j, ii, item)
elif ii == 6:
for j in range(len(station_number_list)):
item = QStandardItem(station_increase_list[j])
self.model.setItem(j, ii, item)
elif ii == 7:
for j in range(len(station_number_list)):
item = QStandardItem(station_trend_list[j])
self.model.setItem(j, ii, item)
elif ii == 8:
for j in range(len(station_number_list)):
item = QStandardItem(station_time0_list[j])
self.model.setItem(j, ii, item)
self.ui.label_12.setText('后台数据加载总耗时: ' + str(iii) + ' s')
Apple = False
while True:
time.sleep(1)
a = time.time()
time_1 = time.strftime("%Y/%m/%d %H:%M:%S", time.localtime((a)))
self.ui.label_9.setText('当前系统时间:' + time_1)
print(8888)
# print(w.actionEvent())
else:
ii += 1
self.ui.label_12.setText('后台数据加载用时: '+ str(ii) +' s')
print(888)
# 定义2个线程#
def main():
poll = [] # 线程池
for i in range(1, 2):
thead_one = threading.Thread(target=thead2, args=(i,))
poll.append(thead_one) # 线程池添加线程
for n in poll:
n.start() # 准备就绪,等待cpu执行
return
num = main()
##======page1页面=====##
##====自定义文件浏览====##
def pushButton_Browser(self):
if Url == 0:
print(2222)
pass
global filename
# filename = ""
print(666)
if (filename == ""):
filename, ok2 = QFileDialog.getSaveFileName(self, "/", "",
"Text Files(*.csv);;Text Files(*.txt);;All Files (*)")
self.ui.lineEdit.setText(filename)
print(666)
self.ui.lineEdit.setText(filename)
# print(Url)
print(filename)
pass
##====自定义文件下载====##
def pushButton_Download(self):
if self.ui.comboBox_3.currentText() =='数据预览':
win32api.MessageBox(0,'请将数据下方 预览预览 调到 数据下载!','提醒',win32con.MB_OK)
pass
else:
global filename
if Url ==0:
print(2222)
pass
else:
# filename = ""
if (filename == ""):
filename, ok2 = QFileDialog.getSaveFileName(self, "/", "",
"Text Files(*.csv);;Text Files(*.txt);;All Files (*)")
self.ui.lineEdit.setText(filename)
else:
# 先获取大范围区间#
html_url = re.findall(' , Url, re.S)
# 获取(station_number)#
station_number = re.findall("toShowStinfonModle\(\'(.*?)\'", html_url[0], re.S) # 站点编号#
# 获取(station_name)
station_name = re.findall(';">(.*?)', html_url[0], re.S) # 站点名称#
# 分别获取station_river、station_time、station_level、station_flow、station_over、station_increase、station_trend#
All_list = re.findall('style="color:black">(.*?)', html_url[0], re.S) # 站点的河名、发布时间、水位、流量、超预警水位、趋势#
def process(i):
global station_number_list
global station_name_list
global station_river_list
global station_time0_list
global station_level_list
global station_flow_list
global station_over_list
global station_increase_list
global station_trend_list
global str_1
str_1 = ''
station_number_list = []
station_name_list = []
station_river_list = []
station_time0_list = []
station_level_list = []
station_flow_list = []
station_over_list = []
station_increase_list = []
station_trend_list = []
for i in range(0, len(All_list), 8):
a = int(i / 8)
station_number_list.append(station_number[a])
station_name_list.append(re.findall('\S*\S', station_name[a])[0]) # 站点名称#
station_river_list.append(re.findall('\S*\S', All_list[i + 1])[0]) # 河名#
station_time0_list.append(All_list[i + 2]) # 时间
station_level_list.append(All_list[i + 3].replace(' ', '')) # 水位
station_flow_list.append(All_list[i + 4].replace(' ', '')) # 流量
station_over_list.append(All_list[i + 5].replace(' ', '')) # 超警水位#
station_increase_list.append(All_list[i + 6].replace(' ', '')) # 涨幅#
station_trend_list.append(All_list[i + 7].replace(' ', '')) # 涨势#
# return station_flow_list
# print(process_m)
item_data_dict = []
for i in range(len(station_number_list)):
data_dict = {'站点编号': station_number[i] if station_number else '',
'站点名称': station_name_list[i] if station_name_list else '',
'河流名称': station_river_list[i] if station_name_list else '',
'时间': station_time0_list[i] if station_time0_list else '',
'水位(m)': station_level_list[i] if station_level_list else '',
'流量(m3/s)': station_flow_list[i] if station_flow_list else '',
'超警(旱)': station_over_list[i] if station_over_list else '',
'涨幅(m)': station_increase_list[i] if station_increase_list else '',
'涨势': station_trend_list[i] if station_trend_list else '',
}
item_data_dict.append(data_dict)
return item_data_dict
print(item_data_dict)
pool = Pool(10)
process1 = [x for x in range(1)]
process_m = pool.map(process, process1)[0]
# print(process_m)
with open(str(str(filename)), 'w', encoding='utf-8') as w:
writer = csv.DictWriter(w, fieldnames=['站点编号', '站点名称', '河流名称', '时间', '水位(m)', '流量(m3/s)', '超警(旱)',
'涨幅(m)', '涨势'], dialect='excel', lineterminator='\n')
writer.writeheader()
writer.writerows(process_m)
City_name_1 = re.findall('selected=(.*?)option>', Url, re.S)[0]
City_name = re.findall('">(.*?)', City_name_1, re.S)[0]
# print(City_name)
# print(Url)
self.ui.label_12.setText('系统当前状态:'+ City_name + ' 下载完成!')
# print(Url)
##====水文局数据选择====##
@pyqtSlot(str)
def on_comboBox_4_currentIndexChanged(self,City):
# City_name = self.ui.comboBox_4.currentText()
global Url
global City_name
if self.ui.comboBox_4.currentText() == '广西水文水资源局':
City_name = '广西水文水资源局'
City = '450000'
Url = 0
self.ui.label_12.setText('系统当前状态:'' 数据加载中,请耐心等待!')
elif self.ui.comboBox_4.currentText() == '南宁市水文水资源局':
City_name = '南宁市水文水资源局'
City = '450100'
Url = 0
self.ui.label_12.setText('系统当前状态:'' 数据加载中,请耐心等待!')
elif self.ui.comboBox_4.currentText() == '柳州市水文水资源局':
City_name = '柳州市水文水资源局'
City = '450200'
Url = 0
self.ui.label_12.setText('系统当前状态:'' 数据加载中,请耐心等待!')
elif self.ui.comboBox_4.currentText() == '桂林市水文水资源局':
City_name = '桂林市水文水资源局'
City = '450300'
Url = 0
self.ui.label_12.setText('系统当前状态:'' 数据加载中,请耐心等待!')
elif self.ui.comboBox_4.currentText() == '梧州市水文水资源局':
City_name = '梧州市水文水资源局'
City = '450400'
Url = 0
self.ui.label_12.setText('系统当前状态:'' 数据加载中,请耐心等待!')
elif self.ui.comboBox_4.currentText() == '玉林市水文水资源局':
City_name = '玉林市水文水资源局'
City = '450900'
Url = 0
self.ui.label_12.setText('系统当前状态:'' 数据加载中,请耐心等待!')
elif self.ui.comboBox_4.currentText() == '百色市水文水资源局':
City_name = '百色市水文水资源局'
City = '451000'
Url = 0
self.ui.label_12.setText('系统当前状态:'' 数据加载中,请耐心等待!')
elif self.ui.comboBox_4.currentText() == '河池市水文水资源局':
City_name = '河池市水文水资源局'
City = '451200'
Url = 0
self.ui.label_12.setText('系统当前状态:'' 数据加载中,请耐心等待!')
elif self.ui.comboBox_4.currentText() == '贵港市水文水资源局':
City_name = '贵港市水文水资源局'
City = '450800'
Url = 0
self.ui.label_12.setText('系统当前状态:'' 数据加载中,请耐心等待!')
elif self.ui.comboBox_4.currentText() == '崇左市水文水资源局':
City_name = '崇左市水文水资源局'
City = '451400'
Url = 0
self.ui.label_12.setText('系统当前状态:'' 数据加载中,请耐心等待!')
elif self.ui.comboBox_4.currentText() == '来宾市水文水资源局':
City_name = '来宾市水文水资源局'
City = '451300'
Url = 0
self.ui.label_12.setText('系统当前状态:'' 数据加载中,请耐心等待!')
elif self.ui.comboBox_4.currentText() == '贺州市水文水资源局':
City_name = '贺州市水文水资源局'
City = '451100'
Url = 0
self.ui.label_12.setText('系统当前状态:'' 数据加载中,请耐心等待!')
elif self.ui.comboBox_4.currentText() == '广西沿海水文水资源局':
City_name = '广西沿海水文水资源局'
City = '45AA000'
Url = 0
self.ui.label_12.setText('系统当前状态:'' 数据加载中,请耐心等待!')
elif self.ui.comboBox_4.currentText() == '云端数据下载':
City_name = '云端数据下载'
pass
# print(99222)
##定义访问头##
def get_passdata():
html_1 = requests.get("http://swszyj.gxzf.gov.cn/sssq/hdsq/ShowRiverData.aspx").content.decode('utf-8')
selector = etree.HTML(html_1)
VIEWSTATE = selector.xpath(
'//input[@type="hidden" and @name="__VIEWSTATE" and @id="__VIEWSTATE"]/@value')
VIEWSTATEGENERATOR = selector.xpath(
'//input[@type="hidden" and @name="__VIEWSTATEGENERATOR" and @id="__VIEWSTATEGENERATOR"]/@value')
EVENTVALIDATION = selector.xpath(
'//input[@type="hidden" and @name="__EVENTVALIDATION" and @id="__EVENTVALIDATION"]/@value')
passdata = {'__EVENTTARGET': '',
'__EVENTARGUMENT': '',
'__VIEWSTATE': VIEWSTATE,
'__VIEWSTATEGENERATOR': VIEWSTATEGENERATOR,
'__EVENTVALIDATION': EVENTVALIDATION,
'keyword': '%e8%af%b7%e8%be%93%e5%85%a5%e5%85%b3%e9%94%ae%e8%af%8d',
'sortid': '',
'ctl00$WorkPlaceHolder$ddlMenu': City,
'ctl00$WorkPlaceHolder$txtKey': '',
'ctl00$WorkPlaceHolder$txtNowPage': '1',
'ctl00$WorkPlaceHolder$txtPageNo': '1000',
'ctl00$WorkPlaceHolder$hidPageNum': '1',
'ctl00$WorkPlaceHolder$imgGo.x': '31',
'ctl00$WorkPlaceHolder$imgGo.y': '10'
}
return passdata
# 定义访问网址#
def get_html():
data = get_passdata()
html_2 = requests.post('http://swszyj.gxzf.gov.cn/sssq/hdsq/ShowRiverData.aspx',data=data).content.decode('utf-8')
return html_2
#定义数据预加载分离线程一##
def thead1(num):
def process1(i):
global Url
if Url == 0:
Url = get_html()
# print(Url)
# print(999)
# 先获取大范围区间#
html_url = re.findall(' , Url, re.S)
# 获取(station_number)#
station_number = re.findall("toShowStinfonModle\(\'(.*?)\'", html_url[0], re.S) # 1、站点编号#
# 获取(station_name)
station_name = re.findall(';">(.*?)', html_url[0], re.S) # 站名#
# 分别获取station_river、station_time、station_level、station_flow、station_over、station_increase、station_trend#
All_list = re.findall('style="color:black">(.*?)', html_url[0],re.S) # 站点的河名、发布时间、水位、流量、超预警水位、趋势#
station_number_list = []
station_name_list = []
station_river_list = []
station_time0_list = []
station_level_list = []
station_flow_list = []
station_over_list = []
station_increase_list = []
station_trend_list = []
for i in range(0, len(All_list), 8):
a = int(i / 8)
station_number_list.append(station_number[a])
station_name_list.append(re.findall('\S*\S', station_name[a])[0]) # 2、站名#
station_river_list.append(re.findall('\S*\S', All_list[i + 1])[0]) # 3、河名#
station_time0_list.append(All_list[i + 2]) # 9、时间
station_level_list.append(All_list[i + 3].replace(' ', '')) # 4、水位
station_flow_list.append(All_list[i + 4].replace(' ', '')) # 5、流量
station_over_list.append(All_list[i + 5].replace(' ', '')) # 6、超警(旱)#
station_increase_list.append(All_list[i + 6].replace(' ', '')) # 7、涨幅#
station_trend_list.append(All_list[i + 7].replace(' ', '')) # 8、涨势#
# print(station_level_list)
self.model.setRowCount(len(station_number_list))
for i in range(9):
if i ==0:
for j in range(len(station_number_list)):
item = QStandardItem(station_number_list[j])
self.model.setItem(j,i,item)
elif i ==1:
for j in range(len(station_number_list)):
item = QStandardItem(station_name_list[j])
self.model.setItem(j,i,item)
elif i ==2:
for j in range(len(station_number_list)):
item = QStandardItem(station_river_list[j])
self.model.setItem(j,i,item)
elif i ==3:
for j in range(len(station_number_list)):
item = QStandardItem(station_level_list[j])
self.model.setItem(j,i,item)
elif i ==4:
for j in range(len(station_number_list)):
item = QStandardItem(station_flow_list[j])
self.model.setItem(j,i,item)
elif i ==5:
for j in range(len(station_number_list)):
item = QStandardItem(station_over_list[j])
self.model.setItem(j,i,item)
elif i ==6:
for j in range(len(station_number_list)):
item = QStandardItem(station_increase_list[j])
self.model.setItem(j,i,item)
elif i ==7:
for j in range(len(station_number_list)):
item = QStandardItem(station_trend_list[j])
self.model.setItem(j,i,item)
elif i ==8:
for j in range(len(station_number_list)):
item = QStandardItem(station_time0_list[j])
self.model.setItem(j,i,item)
self.ui.label_12.setText('系统当前状态:'+ City_name + ' 数据预览完成!')
pool = Pool(5)
p1 = [x for x in range(1)]
m1 = pool.map(process1,p1)
# 定义2个线程#
def main():
poll = [] # 线程池
for i in range(1, 2):
thead_one = threading.Thread(target=thead1, args=(i,))
poll.append(thead_one) # 线程池添加线程
for n in poll:
n.start() # 准备就绪,等待cpu执行
return
num = main()
##====区间水位最小值====##
@pyqtSlot(str)
def on_comboBox_currentIndexChanged(self, min):
station_number_list = []
station_name_list = []
station_river_list = []
station_time0_list = []
station_level_list = []
station_flow_list = []
station_over_list = []
station_increase_list = []
station_trend_list = []
min_valu = self.ui.comboBox.currentText()
max_valu = self.ui.comboBox_2.currentText()
c = abs(float(min_valu))
b = abs(float(max_valu))
if abs(float(min_valu))-abs(float(max_valu))>=0:
b = abs(float(min_valu))
c = abs(float(max_valu))
# print(b, c)
if Url == 0:
pass
else:
City_name_1 = re.findall('selected=(.*?)option>',Url,re.S)[0]
City_name = re.findall('">(.*?)',City_name_1,re.S)[0]
print(City_name)
# 先获取大范围区间#
html_url = re.findall(' , Url, re.S)
# 获取(station_number)#
station_number = re.findall("toShowStinfonModle\(\'(.*?)\'", html_url[0], re.S) # 1、站点编号#
# 获取(station_name)
station_name = re.findall(';">(.*?)', html_url[0], re.S) # 站名#
# 分别获取station_river、station_time、station_level、station_flow、station_over、station_increase、station_trend#
All_list = re.findall('style="color:black">(.*?)', html_url[0],re.S) # 站点的河名、发布时间、水位、流量、超预警水位、趋势#
for i in range(0, len(All_list), 8):
if All_list[i + 5].replace(' ', '') :
if c <= abs(float(All_list[i + 5].replace(' ', ''))) <= b:
a = int(i/8)
# print(a,i)
# print(c,abs(float(d)),b)
station_number_list.append(station_number[a])
station_name_list.append(re.findall('\S*\S', station_name[a])[0]) # 2、站名#
station_river_list.append(re.findall('\S*\S', All_list[i + 1])[0]) # 3、河名#
station_time0_list.append(All_list[i + 2]) # 9、时间
station_level_list.append(All_list[i + 3].replace(' ', '')) # 4、水位
station_flow_list.append(All_list[i + 4].replace(' ', '')) # 5、流量
station_over_list.append(All_list[i + 5].replace(' ', '')) # 6、超警(旱)#
station_increase_list.append(All_list[i + 6].replace(' ', '')) # 7、涨幅#
station_trend_list.append(All_list[i + 7].replace(' ', '')) # 8、涨势#
self.model.setRowCount(len(station_number_list))
for ii in range(9):
if ii == 0:
for j in range(len(station_number_list)):
item = QStandardItem(station_number_list[j])
self.model.setItem(j, ii, item)
elif ii == 1:
for j in range(len(station_number_list)):
item = QStandardItem(station_name_list[j])
self.model.setItem(j, ii, item)
elif ii == 2:
for j in range(len(station_number_list)):
item = QStandardItem(station_river_list[j])
self.model.setItem(j, ii, item)
elif ii == 3:
for j in range(len(station_number_list)):
item = QStandardItem(station_level_list[j])
self.model.setItem(j, ii, item)
elif ii == 4:
for j in range(len(station_number_list)):
item = QStandardItem(station_flow_list[j])
self.model.setItem(j, ii, item)
elif ii == 5:
for j in range(len(station_number_list)):
item = QStandardItem(station_over_list[j])
self.model.setItem(j, ii, item)
elif ii == 6:
for j in range(len(station_number_list)):
item = QStandardItem(station_increase_list[j])
self.model.setItem(j, ii, item)
elif ii == 7:
for j in range(len(station_number_list)):
item = QStandardItem(station_trend_list[j])
self.model.setItem(j, ii, item)
elif ii == 8:
for j in range(len(station_number_list)):
item = QStandardItem(station_time0_list[j])
self.model.setItem(j, ii, item)
self.ui.label_12.setText('系统当前状态:' + str(City_name) + ' 数据预览完成!')
##====区间水位最大值====##
@pyqtSlot(str)
def on_comboBox_2_currentIndexChanged(self, max):
pass
##=====page2页面======##
##====获取单元格信息====##
def do_curChanged_2(self, current, previous):
pass
if (current != None): #执行索引#
text = "当前单元格:%d行,%d列" % (current.row(), current.column())
# print(text)
self.ui.label_6.setText(text)
item = self.itemModel.itemFromIndex(current) #从模型索引获得Item#
self.ui.label_7.setText("单元格内容:" + item.text()) #显示item的文字内容#
##====定义文件打开====##
@pyqtSlot()
def on_pushButton_Open_clicked(self):
self.itemModel.clear()
curPath = os.getcwd() # 获取当前路径
Filename,flt = QFileDialog.getOpenFileName(self,'打开一个文件',curPath,"(*.csv);;(*.txt);;所有文件(*.*)")
if (Filename ==''):
return
# print("当前文件:" + Filename)
self.ui.label_8_1.setText(Filename)
aFile = open(Filename,'r',encoding='UTF-8')
ii=''
ll = -1
for i_1 in aFile:
self.ui.plainTextEdit.appendPlainText(i_1.strip())
# print(i_1)
ll +=1
ii=i_1.split(',')
# self.ColCount = len(ii)
for i_2 in range(len(ii)):
item_1 = QStandardItem(ii[i_2])
self.itemModel.setItem(ll,i_2,item_1)
##====自定义保存新文件====##
@pyqtSlot(bool)
def on_pushButton_Save_Another_clicked(self):
item = self.itemModel.item(1, 1)
# print(item)
if item == None:pass
else:
self.ui.plainTextEdit.clear()
curPath = os.getcwd()
Filename1,flt = QFileDialog.getSaveFileName(self,"保存文件",curPath,"(*.csv);;(*.txt);;所有文件(*.*)")
# print(Filename1)
if (Filename1 == ''):
return
lineStr = ""
for i in range(self.itemModel.rowCount()):
code = ','
count = 0
for j in range(self.itemModel.columnCount()): # 不包括最后一列
item = self.itemModel.item(i, j)
count += 1
if (count == self.itemModel.columnCount()):
code = ''
lineStr = lineStr + item.text() + code
self.ui.plainTextEdit.appendPlainText(lineStr)
aFile = open(Filename1, 'w', encoding='UTF-8')
aFile.write(self.ui.plainTextEdit.toPlainText())
aFile.close()
##====自定义保存文件至当前文件中====##
@pyqtSlot(bool)
def on_pushButton_Save_clicked(self):
pass
##===定义绘制曲线====##
@pyqtSlot(str)
def on_comboBox_5_currentIndexChanged(self, STATION):
STATION = self.ui.comboBox_5.currentText()
# self.ui.push_Level_Flow.setDisabled(True)
self.ui.push_Time_Level.setDisabled(True)
self.ui.push_Time_Flow.setDisabled(True)
self.ui.push_Three.setDisabled(True)
# print(2222222222222222222222)
print(STATION)
if STATION in STADION_list:
url = 'http://swszyj.gxzf.gov.cn/Service/RealTimeWaterHandler.ashx?Method=GetHdSqStcdDetail&stcd='+ str(STATION)
print(STATION)
html0 = requests.get(url).content.decode()
if html0!=[]:
# Level_able = re.search('"Z":"(.*?)"',html).group(1)#取出水位#
# Flow_able = re.search('"Q":"(.*?)"',html).group(1)#取出流量#
if re.search('"Q":"(.*?)"',html0).group(1) == '':#没有流量数据,启用与水位无关的按钮#
self.ui.push_Time_Level.setDisabled(False)
elif re.search('"Z":"(.*?)"',html0).group(1) == '':#没有水位数据,启用与水位无关的按钮#
self.ui.push_Time_Flow.setDisabled(False)
elif re.search('"Q":"(.*?)"',html0).group(1) != '' and re.search('"Z":"(.*?)"',html0).group(1) != '':
# self.ui.push_Level_Flow.setDisabled(False)
self.ui.push_Time_Level.setDisabled(False)
self.ui.push_Time_Flow.setDisabled(False)
self.ui.push_Three.setDisabled(False)
else:
# self.ui.push_Level_Flow.setDisabled(True)
self.ui.push_Time_Level.setDisabled(True)
self.ui.push_Time_Flow.setDisabled(True)
@pyqtSlot() ##时间与水位##
def on_push_Time_Level_clicked(self):
self.ui.chart = QChart()
self.ui.graphicsView.setChart(self.ui.chart)
STATION = self.ui.comboBox_5.currentText()
# print(STATION)
if STATION in STADION_list:
# print(555)
STATION = self.ui.comboBox_5.currentText()
url = 'http://swszyj.gxzf.gov.cn/Service/RealTimeWaterHandler.ashx?Method=GetHdSqStcdDetail&stcd=' + str(
STATION)
# print(STATION)
html2 = requests.get(url).content.decode()
if html2 !=[]:
print(html2)
station_time = re.findall('Date\((.*?)\)', html2, re.S)# 时间,设置为X轴数据#
Water_Level = re.findall('"Z":"(.*?)"', html2, re.S) # 水位,设置为Y轴数据#
# print(min(station_time),max(station_time))
Water_Level1 = []
for i in Water_Level:
Water_Level1.append(float(i)/1.00)
Water_Level1.sort()
# print(Water_Level1)
y_min_Water = Water_Level1[0] # Y轴最小值#
y_max_Water = Water_Level1[len(Water_Level)-1] # Y轴最大值#
x_min_Time = 0 # X轴最小值#
x_max_Time = len(station_time) # X轴最大值#
# y_min_Water = min(Water_Level) # Y轴最小值#
# y_max_Water = max(Water_Level) # Y轴最大值#
# print(x_min,x_max,y_min,y_max)
self.ui.chart.setTitle('时间与水位关系曲线') # 设置图表标题#
series2 = QLineSeries() # 添加曲线#
self.ui.chart.addSeries(series2)
X = QValueAxis()
X.setRange(float(x_min_Time), float(x_max_Time))
X.setTitleText("时间(h)")
Y = QValueAxis()
Y.setRange(float(y_min_Water), float(y_max_Water))
Y.setTitleText("水位(m)")
for i in range(0, len(Water_Level)):
# print(i)
y = float(Water_Level[i])
x = i
series2.append(x, y)
# print(x, y)
self.ui.chart.setAxisX(X, series2)
self.ui.chart.setAxisY(Y, series2)
Fisrt_Time = datetime.fromtimestamp(float(min(station_time)) / 1000.0).strftime("%Y/%m/%d %H:%M:%S")
Last_Time = datetime.fromtimestamp(float(max(station_time)) / 1000.0).strftime("%Y/%m/%d %H:%M:%S")
self.ui.label_15.setText('数据时间段:'+Fisrt_Time+'——'+Last_Time+' 共'+ str(len(station_time)) +'条数据')
##时间与流量##
@pyqtSlot()
def on_push_Time_Flow_clicked(self):
pass
##双曲线一图##
@pyqtSlot()
def on_push_Three_clicked(self):
pass
#站点编号与站点名称查询#
@pyqtSlot()
def on_pushButton_Query_clicked(self):
Name = self.ui.lineEdit_2.text()
if Name in ZD_list:
Number = ZD_NUMBER_list[Name]
self.ui.lineEdit_3.setText(Number)
# print(Number)
else:pass
# print(4444)
##====自定义状态栏功能键====##
# 使用说明#
def action_use(self):
webbrowser.open("https://blog.csdn.net/CCJJLL1234/article/details/102914772", new=0)
print(1)
#开源代码#
def action_open(self):
print(2)
#检查更新#
def action_up(self):
print(3)
#爱心捐助3
def action_devote(self):
print(4)
##====自定义访问头====##
def get_passdata():
html_1 = requests.get("http://swszyj.gxzf.gov.cn/sssq/hdsq/ShowRiverData.aspx").content.decode('utf-8')
selector = etree.HTML(html_1)
VIEWSTATE = selector.xpath(
'//input[@type="hidden" and @name="__VIEWSTATE" and @id="__VIEWSTATE"]/@value')
VIEWSTATEGENERATOR = selector.xpath(
'//input[@type="hidden" and @name="__VIEWSTATEGENERATOR" and @id="__VIEWSTATEGENERATOR"]/@value')
EVENTVALIDATION = selector.xpath(
'//input[@type="hidden" and @name="__EVENTVALIDATION" and @id="__EVENTVALIDATION"]/@value')
passdata = {'__EVENTTARGET': '',
'__EVENTARGUMENT': '',
'__VIEWSTATE': VIEWSTATE,
'__VIEWSTATEGENERATOR': VIEWSTATEGENERATOR,
'__EVENTVALIDATION': EVENTVALIDATION,
'keyword': '%e8%af%b7%e8%be%93%e5%85%a5%e5%85%b3%e9%94%ae%e8%af%8d',
'sortid': '',
'ctl00$WorkPlaceHolder$ddlMenu': '450000',
'ctl00$WorkPlaceHolder$txtKey': '',
'ctl00$WorkPlaceHolder$txtNowPage': '1',
'ctl00$WorkPlaceHolder$txtPageNo': '1000',
'ctl00$WorkPlaceHolder$hidPageNum': '1',
'ctl00$WorkPlaceHolder$imgGo.x': '31',
'ctl00$WorkPlaceHolder$imgGo.y': '10'
}
return passdata
##====定义访问网址==== ##
def get_html():
data = get_passdata()
html_2 = requests.post('http://swszyj.gxzf.gov.cn/sssq/hdsq/ShowRiverData.aspx',data=data).content.decode('utf-8')
return html_2
##====定义独立线程二===##
def thead3(num):
global Url
Url= 0
Url= get_html()
# win32api.MessageBox(0,'系统配置完成,祝您体验愉快!','温馨提醒',win32con.MB_OK)
while True:
time.sleep(60)
Url = get_html()
##====定义2个线程====##
def main():
poll = [] # 线程池
for i in range(1, 2):
thead_one = threading.Thread(target=thead3, args=(i,))
poll.append(thead_one) # 线程池添加线程
for n in poll:
n.start() # 准备就绪,等待cpu执行
return
num = main()
if __name__=='__main__':
app = QApplication(sys.argv)
w = QmyWindow()
w.show()
sys.exit(app.exec_())
篇幅限制,先导入部分代码,需要完整代码,可联系。