2010-06-24 23 views
0

使用wxPython(我對它完全陌生),我創建了一個基於wxPython演示代碼的任務欄圖標。 右鍵單擊任務欄圖標即可打開圖標的菜單。不過,我希望它能夠在左鍵單擊時做一些特定的操作。wxPython任務欄圖標事件無法按預期工作

我試圖通過偵聽EVT_TASKBAR_CLICK事件,如下面的代碼第三綁定線實現這一點:

class TrayIcon(wx.TaskBarIcon): 
    ... 
    def __init__(self, frame): 
     ... 
     self.Bind(wx.EVT_MENU, self.OnLoanUpdate, id=self.TBMENU_UPDATE) 
     self.Bind(wx.EVT_MENU, self.OnTaskBarClose, id=self.TBMENU_CLOSE) 
     self.Bind(wx.EVT_TASKBAR_CLICK, self.DoSomething()) 
     ... 
    def DoSomething(self): 
     print "do it" 

class MainWindow(wx.Frame): 
    def __init__(self, parent, title): 
     wx.Frame.__init__(self, parent, title=title, size=(200, 100)) 
     ... 
     self.tbicon = TrayIcon(self) 
     self.Show(True) 
    ... 

但是,DoSomething()方法在我的任務欄圖標的初始化執行。它不會像我所期望的那樣被點擊左(或右)點擊。實際上,即使我使用其他事件(如EVT_CLOSEEVT_MENU_HIGHLIGHT),其行爲也完全相同。

我在Windows 7下測試這個。 我在做什麼錯?

編輯:當我試圖this code,並實現了在主窗口類的情況下,雙擊工作,但是當它在我的情況不,我仍然感到困惑。

回答

2

嘗試刪除()self.DoSomething()。使用parens,您可以將wx.EVT_TASKBAR_CLICK綁定到任何DoSomething()返回,在本例中爲None。

+0

是的,它的工作,確實忽略了其他兩個Bind()方法中沒有parens! (要完全修復它,我必須爲我的DoSomething方法添加一個額外的evt參數) – Rabarberski 2010-06-24 15:03:14