如何在wxPyton中为TaskBarIcon类绑定EVT_TASKBAR_LEFT_DOWN

时间:2017-09-02 15:14:57

标签: python wxpython python-3.6

我是Python的新手,并使用wxPython构建一个工具,该工具可以最小化到系统托盘图标,并且可以在左键单击时恢复。 我在Python 3中有以下代码。在线搜索时,我发现我可以像下面的代码段一样绑定密钥:

self.Bind(wx.EVT_TASKBAR_LEFT_DOWN, self.OnTaskBarLeftClick)

然而,这导致错误说wx doesn't have this attribute

我想在左键单击任务栏图标时恢复主窗口,而右键单击会创建一个弹出菜单。

import wx
import wx.adv


class SysTrayMenu(wx.adv.TaskBarIcon):
    def __init__(self, frame, icon=None, menu=None):
       wx.adv.TaskBarIcon.__init__(self)
       self.frame = frame
       self.menu = menu
       self.icon = icon
       app_icon = wx.Icon()
       app_icon.CopyFromBitmap(wx.Bitmap(self.icon, wx.BITMAP_TYPE_PNG))
       self.SetIcon(app_icon)

       self.Bind(wx.EVT_TASKBAR_LEFT_DOWN, self.OnTaskBarLeftClick)

   def OnTaskBarLeftClick(self, evt):
       self.frame.Show()
       self.frame.Recover()

   def CreatePopupMenu(self):
       new_menu = wx.Menu()
       return self.menu

3 个答案:

答案 0 :(得分:0)

由于wx.adv类位于wx.adv模块中,因此相应的事件绑定器和事件类型ID也位于nids[1]中。

答案 1 :(得分:0)

我做错了。要弹出菜单,我必须将它与wx.EVT_MENU绑定。

self.Bind(wx.EVT_MENU, self.click_me, id=self.m_cb.GetId())

答案 2 :(得分:0)

请改用以下代码。 PLS。请注意,该事件应为wx.adv.EVT_TASKBAR_LEFT_DOWN,而不是wx.adv.wxEVT_TASKBAR_BALLOON_CLICK。之前我被pycharm的提示误导了。

self.Bind(wx.adv.EVT_TASKBAR_LEFT_DOWN,self.on_left_down)