2014-05-27 2 views
1

При вызове метода show на простом простом экране не отображается. Почему мое простое окно не отображается. :(PyQt Window No Show

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

где вы вызвали шоу для 'Simple' виджета? –

+0

При нажатии кнопки – Haroon

ответ

6

Проблемы с кодом заключается в том, simple в __init__ методы класса Widget является локальным переменным, так как только метод __init__ завершает выполнение, то simple объекта уничтоженный python Garbage Collector, поэтому окно не появляется, потому что объект не существует в памяти. Чтобы решить вашу проблему, просто добавьте self в начало переменной simple, чтобы сделать ее переменной-членом.

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

Спасибо, сработало. – Haroon