You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt5多窗口联动实现:点击按钮跳转至另一个窗口的方法

实现PyQt5两个独立窗口的跳转

嘿,我来帮你搞定这个PyQt5的窗口跳转需求!其实步骤很简单,咱们一步步来:

第一步:确保SecondWindow文件的结构正确

首先你得有一个能正常运行的SecondWindow类,假设你的文件名叫SecondWindow.py,可以参考下面的基础结构:

from PyQt5.QtWidgets import QMainWindow, QLabel

class SecondWindow(QMainWindow):
    def __init__(self):
        super(SecondWindow, self).__init__()
        self.setWindowTitle("Second Window")
        # 这里可以添加第二个窗口的其他控件,比如一个标签
        label = QLabel("This is the second window!", self)
        label.move(50, 50)

第二步:修改Home.py实现跳转逻辑

接下来修改你的Home.py,主要需要添加按钮的点击事件绑定,以及导入SecondWindow类:

from PyQt5 import QtGui
import sys
from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication, QLabel
# 导入SecondWindow类,注意路径要正确,如果在同一目录下直接这样写
from SecondWindow import SecondWindow

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setWindowTitle("Home Window")
        btn = QPushButton('Open Second', self)
        # 给按钮绑定点击事件,触发open_second_window方法
        btn.clicked.connect(self.open_second_window)
        btn.move(50, 50)

    def open_second_window(self):
        # 创建第二个窗口的实例,要赋值给self的属性,避免被垃圾回收
        self.second_win = SecondWindow()
        # 显示第二个窗口
        self.second_win.show()
        # 如果想要模态窗口(弹出后无法操作主窗口),可以替换成下面这行:
        # self.second_win.exec_()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    MW = MainWindow()
    MW.show()
    sys.exit(app.exec_())

关键要点说明

  • 信号与槽绑定:通过btn.clicked.connect(self.open_second_window)把按钮的点击事件和我们自定义的方法关联起来,这是PyQt5实现交互的核心方式
  • 窗口实例持久化:把第二个窗口的实例赋值给self.second_win,如果只是局部变量的话,方法执行完窗口会被Python的垃圾回收机制直接销毁,导致一闪而过
  • 模态/非模态选择:show()会打开非模态窗口,两个窗口可以同时操作;exec_()会打开模态窗口,必须关闭第二个窗口才能回到主窗口,你可以根据需求选择

这样设置好之后,运行Home.py,点击"Open Second"按钮就能成功跳转到第二个窗口啦!

内容的提问来源于stack exchange,提问作者Adel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:58:02