[PyQt] qwidget launching problem

Enes Albay albayenes at gmail.com
Sun May 6 20:58:20 BST 2012


On 05/06/2012 08:55 PM, Phil Thompson wrote:
>  On Sun, 06 May 2012 20:25:15 +0300, Enes Albay<albayenes at gmail.com>
>  wrote:
>>  Hi,
>>
>>
>>  If i implement my class like below:
>>
>>  class MainWindow(QtGui.QMainWindow):
>>        def __init__(self):
>>            super(MainWindow, self).__init__()
>>            self.initUI()
>>
>>        def initUI():
>>            ....
>>            ....
>>            self.showButton = QtGui.QPushButton(u"KlavyeyiGoster",
>>  self.mainWidget)
>>            self.showButton.resize(self.showButton.sizeHint())
>>            self.showButton.clicked.connect(self.widgetClicked)
>>            ....
>>            ....
>>
>>
>>        def widgetClicked(self):
>>            self.newWidget = QtGui.QWidget();
>>            self.newWidget.setGeometry(0, 0, 300, 300)
>>            self.newWidget.show()
>>
>>  when i click Button, newWidget is constructed and showed. But if i
>>  change "widgetClicked" method like this:
>>
>>  def widgetClicked(self):
>>            newWidget = QtGui.QWidget();
>>            newWidget.setGeometry(0, 0, 300, 300)
>>            newWidget.show()
>>
>>  when i clicked the button, it doesn't show anything. There are no
>>  compilation or run time errors.
>>
>>  What is the reason of this difference?
>  In the second version you aren't keeping a reference to the widget (either
>  explicitly or implicitly by giving it a parent) so it is getting garbage
>  collected when widgetClicked() returns.
>
>  Phil
Thanks for your quick replies, Phil and Detlev :)



More information about the PyQt mailing list