第一个窗口(主窗口)
class Ui_mainWindow(object):
def setupUi(self, mainWindow):
mainWindow.setObjectName("mainWindow")
mainWindow.resize(800, 600)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(mainWindow.sizePolicy().hasHeightForWidth())
mainWindow.setSizePolicy(sizePolicy)
mainWindow.setLayoutDirection(QtCore.Qt.LeftToRight)
self.centralwidget = QtWidgets.QWidget(mainWindow)
self.centralwidget.setObjectName("centralwidget")
self.treeWidget = QtWidgets.QTreeWidget(self.centralwidget)
self.treeWidget.setGeometry(QtCore.QRect(210, 20, 451, 421))
self.treeWidget.setLineWidth(1)
self.treeWidget.setMidLineWidth(-3)
self.treeWidget.setObjectName("treeWidget")
self.widget = QtWidgets.QWidget(self.centralwidget)
self.widget.setGeometry(QtCore.QRect(10, 20, 106, 112))
self.widget.setObjectName("widget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.pushButton_3 = QtWidgets.QPushButton(self.widget)
self.pushButton_3.setObjectName("pushButton_3")
self.verticalLayout.addWidget(self.pushButton_3)
self.pushButton_4 = QtWidgets.QPushButton(self.widget)
self.pushButton_4.setObjectName("pushButton_4")
self.verticalLayout.addWidget(self.pushButton_4)
self.pushButton_5 = QtWidgets.QPushButton(self.widget)
self.pushButton_5.setObjectName("pushButton_5")
self.verticalLayout.addWidget(self.pushButton_5)
self.pushButton_6 = QtWidgets.QPushButton(self.widget)
self.pushButton_6.setObjectName("pushButton_6")
self.verticalLayout.addWidget(self.pushButton_6)
self.splitter = QtWidgets.QSplitter(self.centralwidget)
self.splitter.setGeometry(QtCore.QRect(510, 460, 150, 23))
self.splitter.setOrientation(QtCore.Qt.Horizontal)
self.splitter.setObjectName("splitter")
self.pushButton = QtWidgets.QPushButton(self.splitter)
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(self.splitter)
self.pushButton_2.setObjectName("pushButton_2")
mainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(mainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
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")
mainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(mainWindow)
self.statusbar.setObjectName("statusbar")
mainWindow.setStatusBar(self.statusbar)
self.actiondaikai = QtWidgets.QAction(mainWindow)
self.actiondaikai.setObjectName("actiondaikai")
self.actionff = QtWidgets.QAction(mainWindow)
self.actionff.setObjectName("actionff")
self.actionbb = QtWidgets.QAction(mainWindow)
self.actionbb.setObjectName("actionbb")
self.actionbb_2 = QtWidgets.QAction(mainWindow)
self.actionbb_2.setObjectName("actionbb_2")
self.menu.addAction(self.actiondaikai)
self.menu.addAction(self.actionff)
self.menu.addAction(self.actionbb)
self.menu_2.addAction(self.actionbb_2)
self.menubar.addAction(self.menu.menuAction())
self.menubar.addAction(self.menu_2.menuAction())
self.retranslateUi(mainWindow)
QtCore.QMetaObject.connectSlotsByName(mainWindow)
def retranslateUi(self, mainWindow):
_translate = QtCore.QCoreApplication.translate
mainWindow.setWindowTitle(_translate("mainWindow", "管理界面"))
self.treeWidget.headerItem().setText(0, _translate("mainWindow", "数据展示"))
self.pushButton_3.setText(_translate("mainWindow", "标注功能"))
# self.pushButton_3.clicked.connect(self.clickButton3)
self.pushButton_4.setText(_translate("mainWindow", "数据拼合功能"))
# self.pushButton_4.clicked.connect(self.clickButton4)
self.pushButton_5.setText(_translate("mainWindow", "多种数据算法验证"))
self.pushButton_6.setText(_translate("mainWindow", "数据库显示"))
self.pushButton.setText(_translate("mainWindow", "确定"))
self.pushButton_2.setText(_translate("mainWindow", "取消"))
self.menu.setTitle(_translate("mainWindow", "菜单"))
self.menu_2.setTitle(_translate("mainWindow", "编辑"))
self.actiondaikai.setText(_translate("mainWindow", "打开文件"))
self.actionff.setText(_translate("mainWindow", "关闭文件"))
self.actionbb.setText(_translate("mainWindow", "打开标注"))
self.actionbb_2.setText(_translate("mainWindow", "编辑数据文件"))
# def clickButton4(self,event):
# app = QtWidgets.QApplication(sys.argv)
# Window = QtWidgets.QMainWindow() # 注意窗口类型
# ui = dataP.Ui_Form()
# ui.setupUi(Window)
# Window.show()
# sys.exit(app.exec_())
# self.event=dataP.Ui_Form()
# self.event.setupUi()
# self.event.retranslateUi()
主窗口对应的调用
import sys
import RunAlgd
import Rundatas
import demo1
import Rundatap
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QFileDialog, QMessageBox
from PyQt5 import QtWidgets
# 注意这里定义的第一个界面的后端代码类需要继承两个类
class FirstWindowActions(demo1.Ui_mainWindow, QMainWindow):
def __init__(self):
super(demo1.Ui_mainWindow, self).__init__()
# 创建界面
self.setupUi(self)
# 绑定槽函数 数据拼合
self.pushButton_4.clicked.connect(self.open_btn_clicked)
# 绑定槽函数 算法验证
self.pushButton_5.clicked.connect(self.open_btn_clicked1)
# 绑定槽函数 算法验证
self.pushButton_6.clicked.connect(self.open_btn_clicked2)
# 核心代码
# 定义一个按钮的槽函数 数据拼合
def open_btn_clicked(self):
"""点击相应按钮,跳转到第二个界面"""
# 实例化第二个界面的后端类,并对第二个界面进行显示
# 通过派生新类去访问类
self.another_window = Rundatap.AnotherWindowActions()
self.another_window.show()
# 核心代码
# 定义一个按钮的槽函数 数据拼合
def open_btn_clicked1(self):
"""点击相应按钮,跳转到第二个界面"""
# 实例化第二个界面的后端类,并对第二个界面进行显示
# 通过派生新类去访问类
self.another_window = RunAlgd.AnotherWindowActions()
self.another_window.show()
# 定义一个按钮的槽函数 数据拼合
def open_btn_clicked2(self):
"""点击相应按钮,跳转到第二个界面"""
# 实例化第二个界面的后端类,并对第二个界面进行显示
# 通过派生新类去访问类
self.another_window = Rundatas.AnotherWindowActions()
self.another_window.show()
# 主程序入口
if __name__ == '__main__':
# 这里是界面的入口,在这里需要定义QApplication对象,之后界面跳转时不用再重新定义,只需要调用show()函数即可
app = QApplication(sys.argv)
# 实例化
demo_window = FirstWindowActions()
# 显示
demo_window.show()
sys.exit(app.exec_())
子窗口页面
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(815, 430)
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(9, 121, 75, 23))
self.pushButton.setObjectName("pushButton")
self.textEdit_2 = QtWidgets.QTextEdit(Form)
self.textEdit_2.setGeometry(QtCore.QRect(110, 80, 695, 117))
self.textEdit_2.setObjectName("textEdit_2")
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(10, 30, 161, 16))
self.label.setObjectName("label")
self.lineEdit = QtWidgets.QLineEdit(Form)
self.lineEdit.setGeometry(QtCore.QRect(110, 30, 251, 20))
self.lineEdit.setObjectName("lineEdit")
self.retranslateUi(Form)
# self.pushButton.clicked.connect(Form.change) # type: ignore
# QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.pushButton.setText(_translate("Form", "文件选择"))
self.label.setText(_translate("Form", "文件存放的位置:"))
子窗口的调用
import sys
import dataP
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QFileDialog, QMessageBox
from PyQt5 import QtWidgets
import pandas as pd
# 业务类需要继承两个类,一个设计的主界面,另一个是QMainWindow
class AnotherWindowActions(dataP.Ui_Form, QMainWindow):
def __init__(self):
"""
特别注意(最容易出错):
1.派生新类访问基类需要super(),同时它的参数是基类文件下的类及“ui_home_window.py中的
Ui_MainWindow类”,
"""
super(dataP.Ui_Form, self).__init__()
self.setupUi(self)
#绑定槽函数 文件选择
self.pushButton.clicked.connect(self.open_btn_clicked)
# self.textEdit_4.textEdited[str].connect(lambda: self.onChange1())
# self.pushButton_2.clicked.connect(self.save_btn_clicked)
# def onChange1(self):
# self.VAR = self.textEdit_4.text()
# print(self.VAR)
# 核心代码
# 定义一个按钮的槽函数 数据拼合
# def save_btn_clicked(self):
def open_btn_clicked(self):
str1 = self.lineEdit.text()
print(str1)
result_table = []
i = 0
window = QWidget()
window.resize(300, 100)
#打开单个文件
# window.setWindowTitle('Open File Dialog')
# filename = QFileDialog.getOpenFileName(window, 'Open File', '.')
# print(filename)
window.setWindowTitle('Open Folder Dialog')
folders = QFileDialog.getOpenFileNames(window,'Open Folder','.')
print(type(folders))
print(folders[0])
for path in folders[0]:
print(path)
data = pd.read_csv(path, header=None, encoding="utf-8", engine="python", index_col=False)
result_table.append(data)
if i == 0:
pass
else:
result_table[i].loc[:, 0] = result_table[i].loc[:, 0] + max(result_table[i - 1].loc[:, 0]) + 100
i = i + 1
result_data = pd.concat(result_table)
#带有标题 / header=None 不带标题
result_data.to_csv(str1, encoding="utf_8_sig", index=False,header=None)
self.textEdit_2.setText(str(folders[0]))
主要看主窗口的调用和子窗口的调用即可