class ResultWindow(QWidget): def __init__(self): super(self.__class__, self).__init__() self.setup_ui() def setup_ui(self): self.setWindowTitle("查詢結果") self.setFont(PyQt5.QtGui.QFont("Times New Roman", 11)) self.buttonCopy = QPushButton("複製查詢結果 (Ctrl+C)") self.buttonCopy.clicked.connect(self.copy) self.labelInfo = QLabel("") self.shortcut = QShortcut(PyQt5.QtGui.QKeySequence("Ctrl+C"), self) self.shortcut.activated.connect(self.copy) self.formLayout = QFormLayout() self.formLayout.addRow(self.buttonCopy, self.labelInfo) self.widget = DataTableWidget() self.widget.setButtonsVisible(False) self.widget.setMinimumSize(600, 600) self.vbox = QVBoxLayout() self.vbox.addLayout(self.formLayout) self.vbox.addWidget(self.widget) self.setLayout(self.vbox) def update(self, data): self.df = data self.labelInfo.setText("") self.model = DataFrameModel() self.widget.resize(self.widget.sizeHint()) self.widget.show() self.widget.setViewModel(self.model) self.model.setDataFrame(data) def copy(self): count = 0 indexes = self.widget.tableView.selectionModel().selectedRows() if len(indexes) > 0: rows = [index.row() for index in indexes] count = len(indexes) else: rows = [i for i in range(self.widget.tableView.model().rowCount())] count = self.widget.tableView.model().rowCount() s = '' for i in rows: r = self.df.iloc[[i]] for v in r.values[0].astype(str): s += (v + '\t') s = s[:-1] + '\n' pyperclip.copy(s[:-1]) self.labelInfo.setText(str(count) + " 筆資料已複製至剪貼簿")
class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1030, 778) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth()) MainWindow.setSizePolicy(sizePolicy) qss_file = open(os.getcwd() + '/resource/QSS/Mainwindow.qss').read() self.setStyleSheet(qss_file) self.centralWidget = QtWidgets.QWidget(MainWindow) self.centralWidget.setObjectName("centralWidget") self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.centralWidget) self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.verticalLayout_3 = QtWidgets.QVBoxLayout() self.verticalLayout_3.setObjectName("verticalLayout_3") self.verticalLayout_2 = QtWidgets.QVBoxLayout() self.verticalLayout_2.setObjectName("verticalLayout_2") self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.label_prov = QtWidgets.QLabel(self.centralWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_prov.sizePolicy().hasHeightForWidth()) self.label_prov.setSizePolicy(sizePolicy) self.label_prov.setMinimumSize(QtCore.QSize(0, 0)) self.label_prov.setStyleSheet("font: 9pt \"微软雅黑\";") self.label_prov.setObjectName("label_prov") self.horizontalLayout.addWidget(self.label_prov) self.comboBox_prov = QtWidgets.QComboBox(self.centralWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.comboBox_prov.sizePolicy().hasHeightForWidth()) self.comboBox_prov.setSizePolicy(sizePolicy) self.comboBox_prov.setMinimumSize(QtCore.QSize(0, 0)) self.comboBox_prov.setStyleSheet("font: 9pt \"微软雅黑\";") self.comboBox_prov.setObjectName("comboBox_prov") self.horizontalLayout.addWidget(self.comboBox_prov) self.label_city = QtWidgets.QLabel(self.centralWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_city.sizePolicy().hasHeightForWidth()) self.label_city.setSizePolicy(sizePolicy) self.label_city.setMinimumSize(QtCore.QSize(0, 0)) self.label_city.setStyleSheet("font: 9pt \"微软雅黑\";") self.label_city.setObjectName("label_city") self.horizontalLayout.addWidget(self.label_city) self.comboBox_city = QtWidgets.QComboBox(self.centralWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.comboBox_city.sizePolicy().hasHeightForWidth()) self.comboBox_city.setSizePolicy(sizePolicy) self.comboBox_city.setMinimumSize(QtCore.QSize(0, 0)) self.comboBox_city.setStyleSheet("font: 9pt \"微软雅黑\";") self.comboBox_city.setObjectName("comboBox_city") self.horizontalLayout.addWidget(self.comboBox_city) self.label = QtWidgets.QLabel(self.centralWidget) self.label.setStyleSheet("font: 9pt \"微软雅黑\";") self.label.setObjectName("label") self.horizontalLayout.addWidget(self.label) self.lineEdit_keyword = QtWidgets.QLineEdit(self.centralWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(1) sizePolicy.setHeightForWidth(self.lineEdit_keyword.sizePolicy().hasHeightForWidth()) self.lineEdit_keyword.setSizePolicy(sizePolicy) self.lineEdit_keyword.setMinimumSize(QtCore.QSize(0, 0)) self.lineEdit_keyword.setStyleSheet("font: 9pt \"微软雅黑\";") self.lineEdit_keyword.setObjectName("lineEdit_keyword") self.horizontalLayout.addWidget(self.lineEdit_keyword) self.verticalLayout_2.addLayout(self.horizontalLayout) self.pandastablewidget = DataTableWidget(self.centralWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(1) sizePolicy.setHeightForWidth(self.pandastablewidget.sizePolicy().hasHeightForWidth()) self.pandastablewidget.setSizePolicy(sizePolicy) self.pandastablewidget.setMinimumSize(QtCore.QSize(800, 600)) self.pandastablewidget.setObjectName("pandastablewidget") self.verticalLayout_2.addWidget(self.pandastablewidget) self.verticalLayout_3.addLayout(self.verticalLayout_2) self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.label_display = QtWidgets.QLabel(self.centralWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_display.sizePolicy().hasHeightForWidth()) self.label_display.setSizePolicy(sizePolicy) self.label_display.setStyleSheet("font: 9pt \"微软雅黑\";") self.label_display.setObjectName("label_display") self.horizontalLayout_3.addWidget(self.label_display) self.label_progress = QtWidgets.QLabel(self.centralWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_progress.sizePolicy().hasHeightForWidth()) self.label_progress.setSizePolicy(sizePolicy) self.label_progress.setStyleSheet("font: 9pt \"微软雅黑\";") self.label_progress.setText("") self.label_progress.setObjectName("label_progress") self.horizontalLayout_3.addWidget(self.label_progress) self.verticalLayout_3.addLayout(self.horizontalLayout_3) self.horizontalLayout_4.addLayout(self.verticalLayout_3) self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.pushButton_crawl = QtWidgets.QPushButton(self.centralWidget) self.pushButton_crawl.setStyleSheet("font: 9pt \"微软雅黑\";") self.pushButton_crawl.setObjectName("pushButton_crawl") self.horizontalLayout_2.addWidget(self.pushButton_crawl) self.pushButton_clear = QtWidgets.QPushButton(self.centralWidget) self.pushButton_clear.setSizeIncrement(QtCore.QSize(0, 0)) self.pushButton_clear.setBaseSize(QtCore.QSize(0, 0)) self.pushButton_clear.setStyleSheet("font: 9pt \"微软雅黑\";") self.pushButton_clear.setObjectName("pushButton_clear") self.horizontalLayout_2.addWidget(self.pushButton_clear) self.verticalLayout.addLayout(self.horizontalLayout_2) self.listWidget = QtWidgets.QListWidget(self.centralWidget) self.listWidget.setObjectName("listWidget") self.verticalLayout.addWidget(self.listWidget) self.horizontalLayout_4.addLayout(self.verticalLayout) MainWindow.setCentralWidget(self.centralWidget) self.menuBar = QtWidgets.QMenuBar(MainWindow) self.menuBar.setGeometry(QtCore.QRect(0, 0, 1030, 26)) self.menuBar.setObjectName("menuBar") self.menu = QtWidgets.QMenu(self.menuBar) self.menu.setObjectName("menu") self.menu_2 = QtWidgets.QMenu(self.menuBar) self.menu_2.setObjectName("menu_2") self.menu_3 = QtWidgets.QMenu(self.menuBar) self.menu_3.setObjectName("menu_3") MainWindow.setMenuBar(self.menuBar) self.menu_3.addSeparator() self.menu_3.addSeparator() self.menuBar.addAction(self.menu.menuAction()) self.menuBar.addAction(self.menu_2.menuAction()) self.menuBar.addAction(self.menu_3.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) outPutAction = QtWidgets.QAction(QtGui.QIcon(os.getcwd() + '/resource/spider.png'), '导出文件', self) outPutAction.triggered.connect(self.outPutFile) self.menu.addAction(outPutAction) # 设置窗口背景 # win = QMainWindow() # palette = QPalette() # palette.setColor(QPalette.Background, Qt.black) # win.setPalette(palette) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.label_prov.setText(_translate("MainWindow", "省 份")) self.label_city.setText(_translate("MainWindow", "城 市")) self.label.setText(_translate("MainWindow", "关键词")) self.label_display.setText(_translate("MainWindow", "抓取进度")) self.pushButton_crawl.setText(_translate("MainWindow", "开始抓取")) self.pushButton_clear.setText(_translate("MainWindow", "清空结果")) self.menu.setTitle(_translate("MainWindow", "导出结果")) self.menu_2.setTitle(_translate("MainWindow", "关于")) self.menu_3.setTitle(_translate("MainWindow", "联系我")) def outPutFile(self): print('开始运行导出程序') try: self.Filedialog = QtWidgets.QDialog(self.centralWidget) self.Filedialog.setFixedSize(600, 150) self.Filedialog.setWindowTitle('导出EXCEL文件') self.Filedialog.setModal(True) self.Dirlabel = QtWidgets.QLabel(self.Filedialog) self.Dirlabel.move(20, 40) self.Dirlabel.setFixedSize(70, 30) self.Dirlabel.setText('文件位置: ') self.DirlineEdit = QtWidgets.QLineEdit(self.Filedialog) self.DirlineEdit.move(100, 40) self.DirlineEdit.setFixedSize(350, 30) self.DirlineEdit.setText(os.getcwd()) self.Filelabel = QtWidgets.QLabel(self.Filedialog) self.Filelabel.move(20, 100) self.Filelabel.setFixedSize(70, 30) self.Filelabel.setText('文件名称: ') self.FilelineEdit = QtWidgets.QLineEdit(self.Filedialog) self.FilelineEdit.move(100, 100) self.FilelineEdit.setFixedSize(350, 30) self.YesButton = QtWidgets.QPushButton(self.Filedialog) self.YesButton.move(470, 100) self.YesButton.setFixedSize(100, 30) self.YesButton.setText('确定') self.YesButton.clicked.connect(self.saveFileToExcel) self.browlButton = QtWidgets.QPushButton(self.Filedialog) self.browlButton.move(470, 40) self.browlButton.setFixedSize(100, 30) self.browlButton.setText('浏览') self.browlButton.clicked.connect(self.openFile) self.Filedialog.show() except Exception as e: print(e)
class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(724, 402) MainWindow.setMinimumSize(QtCore.QSize(724, 402)) MainWindow.setMaximumSize(QtCore.QSize(724, 402)) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.pandastablewidget = DataTableWidget(self.centralwidget) self.pandastablewidget.setGeometry(QtCore.QRect(0, 110, 363, 251)) self.pandastablewidget.setMinimumSize(QtCore.QSize(363, 251)) self.pandastablewidget.setMaximumSize(QtCore.QSize(363, 251)) self.pandastablewidget.setObjectName("pandastablewidget") self.pushButton_queding1 = QtWidgets.QPushButton( self.pandastablewidget) self.pushButton_queding1.setGeometry(QtCore.QRect(200, 10, 56, 21)) self.pushButton_queding1.setObjectName("pushButton_queding1") self.line = QtWidgets.QFrame(self.centralwidget) self.line.setGeometry(QtCore.QRect(0, 100, 371, 16)) self.line.setFrameShape(QtWidgets.QFrame.HLine) self.line.setFrameShadow(QtWidgets.QFrame.Sunken) self.line.setObjectName("line") self.line_2 = QtWidgets.QFrame(self.centralwidget) self.line_2.setGeometry(QtCore.QRect(360, 0, 20, 391)) self.line_2.setFrameShape(QtWidgets.QFrame.VLine) self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_2.setObjectName("line_2") self.layoutWidget = QtWidgets.QWidget(self.centralwidget) self.layoutWidget.setGeometry(QtCore.QRect(0, 0, 247, 78)) self.layoutWidget.setObjectName("layoutWidget") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.layoutWidget) self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) self.verticalLayout_2.setObjectName("verticalLayout_2") self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.pushButton_logdatabase = QtWidgets.QPushButton(self.layoutWidget) self.pushButton_logdatabase.setObjectName("pushButton_logdatabase") self.horizontalLayout.addWidget(self.pushButton_logdatabase) self.pushButton_opendatabase = QtWidgets.QPushButton(self.layoutWidget) self.pushButton_opendatabase.setObjectName("pushButton_opendatabase") self.horizontalLayout.addWidget(self.pushButton_opendatabase) self.pushButton_openfile = QtWidgets.QPushButton(self.layoutWidget) self.pushButton_openfile.setObjectName("pushButton_openfile") self.horizontalLayout.addWidget(self.pushButton_openfile) self.pushButton_sqllanguage = QtWidgets.QPushButton(self.layoutWidget) self.pushButton_sqllanguage.setObjectName("pushButton_sqllanguage") self.horizontalLayout.addWidget(self.pushButton_sqllanguage) self.verticalLayout.addLayout(self.horizontalLayout) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.pushButton_save = QtWidgets.QPushButton(self.layoutWidget) self.pushButton_save.setObjectName("pushButton_save") self.horizontalLayout_2.addWidget(self.pushButton_save) self.pushButton_datareturn = QtWidgets.QPushButton(self.layoutWidget) self.pushButton_datareturn.setObjectName("pushButton_datareturn") self.horizontalLayout_2.addWidget(self.pushButton_datareturn) self.pushButton_cleardata = QtWidgets.QPushButton(self.layoutWidget) self.pushButton_cleardata.setObjectName("pushButton_cleardata") self.horizontalLayout_2.addWidget(self.pushButton_cleardata) self.pushButton_view = QtWidgets.QPushButton(self.layoutWidget) self.pushButton_view.setObjectName("pushButton_view") self.horizontalLayout_2.addWidget(self.pushButton_view) self.verticalLayout.addLayout(self.horizontalLayout_2) self.verticalLayout_2.addLayout(self.verticalLayout) self.label = QtWidgets.QLabel(self.layoutWidget) self.label.setObjectName("label") self.verticalLayout_2.addWidget(self.label) self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.radioButton_Minmax = QtWidgets.QRadioButton(self.layoutWidget) self.radioButton_Minmax.setCheckable(True) self.radioButton_Minmax.setChecked(False) self.radioButton_Minmax.setObjectName("radioButton_Minmax") self.horizontalLayout_3.addWidget(self.radioButton_Minmax) self.radioButton_Zscore = QtWidgets.QRadioButton(self.layoutWidget) self.radioButton_Zscore.setObjectName("radioButton_Zscore") self.horizontalLayout_3.addWidget(self.radioButton_Zscore) self.radioButton_xiaoshudingbiao = QtWidgets.QRadioButton( self.layoutWidget) self.radioButton_xiaoshudingbiao.setObjectName( "radioButton_xiaoshudingbiao") self.horizontalLayout_3.addWidget(self.radioButton_xiaoshudingbiao) self.verticalLayout_2.addLayout(self.horizontalLayout_3) self.comboBox_attributes = QtWidgets.QComboBox(self.centralwidget) self.comboBox_attributes.setGeometry(QtCore.QRect(420, 0, 60, 19)) self.comboBox_attributes.setObjectName("comboBox_attributes") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(370, 0, 61, 16)) font = QtGui.QFont() font.setFamily("Bahnschrift Light") font.setPointSize(11) self.label_2.setFont(font) self.label_2.setObjectName("label_2") self.label_comboboxattributes = QtWidgets.QLabel(self.centralwidget) self.label_comboboxattributes.setGeometry(QtCore.QRect( 490, 0, 201, 16)) font = QtGui.QFont() font.setFamily("Arial") font.setPointSize(10) self.label_comboboxattributes.setFont(font) self.label_comboboxattributes.setObjectName("label_comboboxattributes") self.qtpandas_attributewidget = DataTableWidget(self.centralwidget) self.qtpandas_attributewidget.setGeometry( QtCore.QRect(410, 20, 270, 133)) self.qtpandas_attributewidget.setMinimumSize(QtCore.QSize(270, 133)) self.qtpandas_attributewidget.setMaximumSize(QtCore.QSize(270, 133)) self.qtpandas_attributewidget.setObjectName("qtpandas_attributewidget") self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget) self.gridLayoutWidget.setGeometry(QtCore.QRect(370, 160, 351, 201)) self.gridLayoutWidget.setObjectName("gridLayoutWidget") self.gridLayout_pciture = QtWidgets.QGridLayout(self.gridLayoutWidget) self.gridLayout_pciture.setContentsMargins(0, 0, 0, 0) self.gridLayout_pciture.setObjectName("gridLayout_pciture") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 724, 18)) self.menubar.setObjectName("menubar") self.menuPreprocess = QtWidgets.QMenu(self.menubar) self.menuPreprocess.setObjectName("menuPreprocess") self.menuClassify = QtWidgets.QMenu(self.menubar) self.menuClassify.setObjectName("menuClassify") self.menuCluster = QtWidgets.QMenu(self.menubar) self.menuCluster.setObjectName("menuCluster") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.menubar.addAction(self.menuPreprocess.menuAction()) self.menubar.addAction(self.menuClassify.menuAction()) self.menubar.addAction(self.menuCluster.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.pushButton_queding1.setText(_translate("MainWindow", "确定")) self.pushButton_logdatabase.setText(_translate("MainWindow", "登录数据库")) self.pushButton_opendatabase.setText(_translate("MainWindow", "打开数据库")) self.pushButton_openfile.setText(_translate("MainWindow", "打开其他文件")) self.pushButton_sqllanguage.setText(_translate("MainWindow", "SQL语言")) self.pushButton_save.setText(_translate("MainWindow", "保存")) self.pushButton_datareturn.setText(_translate("MainWindow", "数据还原")) self.pushButton_cleardata.setText(_translate("MainWindow", "数据清空")) self.pushButton_view.setText(_translate("MainWindow", "视图")) self.label.setText(_translate("MainWindow", "数据归一化")) self.radioButton_Minmax.setText(_translate("MainWindow", "最小-最大规范化")) self.radioButton_Zscore.setText(_translate("MainWindow", "z分数规范化")) self.radioButton_xiaoshudingbiao.setText( _translate("MainWindow", "小数定标规范化")) self.label_2.setText(_translate("MainWindow", "选择属性")) self.label_comboboxattributes.setText(_translate("MainWindow", "属性值")) self.menuPreprocess.setTitle(_translate("MainWindow", "数据预处理")) self.menuClassify.setTitle(_translate("MainWindow", "分类")) self.menuCluster.setTitle(_translate("MainWindow", "聚类"))