2012-02-28 70 views
0

這可能是一些愚蠢的事情,但我真的無法弄清楚自己。在PyQT中綁定菜單動作

我爲QtGui.QAction使用包裝類。代碼如下:

class Action_Abstract(Abstract): 

    def __init__(self, app, menu): 
     Abstract.__init__(self, app) 

     action = QtGui.QAction(self.get_window()) 
     action.setText('Text') 
     action.triggered.connect(self.execute) 

     menu.addAction(action) 

    def execute(self): 
     print 'Called' 

沒有錯誤拋出,操作出現在菜單中。但是當我點擊操作時,不會調用self.execute。 有趣的是,如果我用示例中的QtGui.qApp.quit替換self.execute,它就可以工作。

我在這裏錯過了什麼?

回答

2

您是否保留對Action_Abstract實例的引用?

如果你不這樣做,問題可能是Python對象被垃圾回收,這也會切斷與self.execute的連接。

+0

謝謝你,善良的先生,那就是問題所在。看來,我仍然有很多東西要學Python。 – Nameless 2012-02-28 11:48:47