首页 > 其他 > 详细

pyqt5 关于主窗口闪退

时间:2020-06-16 16:53:45      阅读:385      评论:0      收藏:0      [点我收藏+]

窗口闪退

from PyQt5.QtWidgets import *
import sys


class Main(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("主窗口")
        button = QPushButton("弹出子窗口", self)
        button.clicked.connect(self.show_child)  # 关联子窗口调用函数

    def show_child(self):
        child_window = Child()
        child_window.show()

class Child(QDialog):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("子窗口")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Main()
    window.show()
    sys.exit(app.exec_())

程序中调用QDialog的show()方法,运行后点击按钮,子窗口会一闪而过,它的实例为父窗口show_child()方法中的局部变量,当窗口显示后,父窗口的show_child()方法继续执行,当方法运行完后,python的回收机制就把局部变量销毁了,相当于子窗口实例被销毁,故子窗口一闪而过。

将child_window改为类属性就不会有这种问题

def show_child(self):
        self.child_window = Child()
        self.child_window.show()

 

pyqt5 关于主窗口闪退

原文:https://www.cnblogs.com/gexbooks/p/13140018.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!