开源代码

在这里插入代码片
窗口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_())

篇幅限制,先导入部分代码,需要完整代码,可联系。

你可能感兴趣的:(开源代码)