ホーム » Python » Pythonの変数のスコープとWidget

Pythonの変数のスコープとWidget

ローカル変数に格納したWidgeのインスタンスはスコープを外れるとなくなる
これはQGISのプラグイン開発時にふと違和感を感じたPythonの仕様?

関数initGuiの中でQDockWidgetのインスタンスをローカル変数「mainpanel」にセットして
画面に追加すると正しく表示されない

しかしクラスのメンバー変数にセットすると正しく表示される

本来はaddDockWidgetした時点でインスタンスは他で保たれるであろうから表示されないことはない気がするが・・・

正しく表示されない例

[code]
def initGui(self):
mainpanel = MainPanelDockWidget()
self.iface.addDockWidget(Qt.RightDockWidgetArea, mainpanel)
self.dockwidget.show()
[/code]

正しく表示される例

[code]
def initGui(self):
self.dockwidget = MainPanelDockWidget()
self.iface.addDockWidget(Qt.RightDockWidgetArea, self.dockwidget)
self.dockwidget.show()
[/code]