wxPython任务栏图标事件无法按预期工作

时间:2010-06-24 14:01:45

标签: events wxpython taskbar

使用wxPython(我是新手),我已经基于wxPython演示代码创建了一个任务栏图标。 右键单击任务栏图标即可打开图标菜单。但是我希望它能够在左键单击时执行特定的操作。

我尝试通过监听EVT_TASKBAR_CLICK事件来实现此功能,如以下代码中的第3个Bind行:

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并在MainWindow类中实现该事件时,双击工作,但在我的情况下,我仍然感到困惑。

2 个答案:

答案 0 :(得分:2)

尝试删除()中的self.DoSomething()。使用parens,您将wx.EVT_TASKBAR_CLICK绑定到任何DoSomething()返回,在本例中为None。

答案 1 :(得分:0)

在此处查看:http://docs.wxwidgets.org/stable/wx_wxtaskbaricon.html

您是否尝试过LEFT_UP和LEFT_DOWN而不是CLICK?