使用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_CLOSE
或EVT_MENU_HIGHLIGHT
),其行爲也完全相同。
我在Windows 7下測試這個。 我在做什麼錯?
編輯:當我試圖this code,並實現了在主窗口類的情況下,雙擊工作,但是當它在我的情況不,我仍然感到困惑。
是的,它的工作,確實忽略了其他兩個Bind()方法中沒有parens! (要完全修復它,我必須爲我的DoSomething方法添加一個額外的evt參數) – Rabarberski 2010-06-24 15:03:14