我是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
答案 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)