PyQt5如何在第一个窗口关闭时更改第二个窗口

Posted

技术标签:

【中文标题】PyQt5如何在第一个窗口关闭时更改第二个窗口【英文标题】:PyQt5 how to make changes to second window when first window closes 【发布时间】:2017-07-24 13:34:16 【问题描述】:

我对GUI设计比较陌生,我想要的很简单:

假设我有两个窗口,当第一个窗口关闭时,它会更改第二个窗口上的标签文本。

任何帮助将不胜感激!谢谢

【问题讨论】:

您自己尝试过什么吗?编辑您使用代码实现的目标。 请出示您的代码 代码如下所示 这是一个答案还是只是你的代码? 这是一个答案,它已经工作了 【参考方案1】:

我自己做的,基本思路是把一个窗口对象传给另一个窗口进行修改。

例如,当window2关闭时,我将更改window1:

from PyQt5 import QtWidgets
import sys

class window_1(QtWidgets.QWidget):
    #Initilization stuff
    def __init__(self):
        super(window_1,self).__init__()
        self.setGeometry(50,50,500,500)
        self.Label = QtWidgets.QLabel(self)
        self.Label.setGeometry(100,100,200,10)
        self.Label.setText('Second Window Not closed yet')
        self.show()


class window_2(QtWidgets.QWidget):
    #Pass win1 object during initialization
    def __init__(self,win1_obj):
        super(window_2,self).__init__()
        self.setGeometry(600,50,500,500)
        self.win1_obj = win1_obj
        self.show()

    #Define what happens when window2 closes
    def closeEvent(self,event):
        self.win1_obj.Label.setText('Second Window closed!')



app = QtWidgets.QApplication(sys.argv)
win1 = window_1() #window1 object
win2 = window_2(win1) #pass window1 object to window2 class
sys.exit(app.exec_())

【讨论】:

以上是关于PyQt5如何在第一个窗口关闭时更改第二个窗口的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 - 第二个窗口中的按钮在单击时不执行操作

更改页面后关闭标签窗口浏览器

如何使用 pyqt5 和 qt 设计器从主对话框窗口打开第二个窗口

如何在python pyqt5中从主窗口管理第二个窗口

打开第二个窗口后隐藏主窗口?另外,当第二个窗口被用户关闭时,主窗口如何重新出现?

PYQT GUI更新和通过Qthread在第二个窗口的QLCD显示器上显示浮点信号不起作用[关闭]