2010-06-24 48 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