简单地调用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_())
请帮助!
答案 0 :(得分:6)
代码的问题在于,simple
类__init__
方法中的Widget
是一个局部变量,因此只要__init__
方法完成执行, simple
对象被python 垃圾收集器销毁,因此窗口不会出现,因为该对象在内存中不存在。要解决您的问题,只需在self
变量的开头添加simple
即可使其成为成员变量。
...
self.simple = Simple()
button = QtGui.QPushButton("Button", self)
button.clicked.connect(self.simple.show)
...