Pyqt多窗口跳转

第一个窗口(主窗口)

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]))

主要看主窗口的调用和子窗口的调用即可

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现登录跳转新窗口的功能,你需要在 Tkinter 中使用 Toplevel 组件来创建新窗口。下面是一个简单的示例代码: ```python import tkinter as tk class LoginWindow: def __init__(self, root): self.root = root self.root.title("登录窗口") # 创建登录界面的组件 self.username_label = tk.Label(self.root, text="用户名") self.username_entry = tk.Entry(self.root) self.password_label = tk.Label(self.root, text="密码") self.password_entry = tk.Entry(self.root, show="*") self.login_button = tk.Button(self.root, text="登录", command=self.login) # 布局登录界面的组件 self.username_label.pack() self.username_entry.pack() self.password_label.pack() self.password_entry.pack() self.login_button.pack() def login(self): # 在这里编写登录验证的代码 # 如果验证通过,则创建新窗口 self.new_window = tk.Toplevel(self.root) self.app = MainWindow(self.new_window) class MainWindow: def __init__(self, root): self.root = root self.root.title("主窗口") # 创建新窗口的组件 self.label = tk.Label(self.root, text="欢迎登录!") self.logout_button = tk.Button(self.root, text="退出登录", command=self.logout) # 布局新窗口的组件 self.label.pack() self.logout_button.pack() def logout(self): # 在这里编写退出登录的代码 # 关闭新窗口并返回登录界面 self.root.destroy() # 创建主窗口并运行程序 if __name__ == "__main__": root = tk.Tk() app = LoginWindow(root) root.mainloop() ``` 这个示例程序包含两个窗口:登录窗口和主窗口。在登录窗口中,用户输入用户名和密码,点击登录按钮后进行登录验证。如果验证通过,则创建新窗口并显示欢迎信息。在主窗口中,用户可以点击退出登录按钮返回登录窗口。 你可以根据自己的需求修改代码,比如添加更多的组件、修改布局方式等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值