PyQt窗口没有显示

时间:2014-05-27 03:18:02

标签: python pyqt

简单地调用show方法时,简单窗口不会显示。为什么我的Simple窗口不显示。 :(

import sys
from PyQt4 import QtGui


class Widget(QtGui.QWidget):

    def __init__(self):
        super(Widget, self).__init__()
        simple = Simple()

        button = QtGui.QPushButton("Button", self)
        button.clicked.connect(simple.show)
        self.show()


class Simple(QtGui.QWidget):

    def __init__(self):
        super(Simple, self).__init__()
        self.setGeometry(300, 250, 250, 150)
        self.setWindowTitle("Simple Widget")


if __name__ =="__main__":
    app = QtGui.QApplication(sys.argv)
    widget = Widget()
    sys.exit(app.exec_())

请帮助!

1 个答案:

答案 0 :(得分:6)

代码的问题在于,simple__init__方法中的Widget是一个局部变量,因此只要__init__方法完成执行, simple对象被python 垃圾收集器销毁,因此窗口不会出现,因为该对象在内存中不存在。要解决您的问题,只需在self变量的开头添加simple即可使其成为成员变量。

...
self.simple = Simple()
button = QtGui.QPushButton("Button", self)
button.clicked.connect(self.simple.show)
...