wxPython 系统托盘图标
我正在尝试为我的应用程序在系统托盘中添加一个图标,但遇到了两个问题。
首先,虽然我使用的图标是一个带透明背景的.png格式,但显示出来的图标却有一个难看的白色背景。
其次,这个图标有一个右键菜单,里面有“显示”和“关闭”这两个选项,但不知道为什么它们旁边都显示了“Ctrl - Q”。我并没有设置这个快捷键组合,而且这个组合也没有任何作用。
这是我使用的代码,几乎是直接从文档中复制过来的:
class SysTray(wx.TaskBarIcon):
def __init__(self, parent, icon, text):
wx.TaskBarIcon.__init__(self)
self.parentApp = parent
self.SetIcon(icon, text)
self.CreateMenu()
def CreateMenu(self):
self.Bind(wx.EVT_TASKBAR_RIGHT_UP, self.ShowMenu)
self.menu=wx.Menu()
self.menu.Append(wx.ID_OPEN, "Show")
self.menu.Append(wx.ID_EXIT, "Close")
def ShowMenu(self,event):
self.PopupMenu(self.menu)
这个是通过以下方式实现的:
self.trayicon = SysTray(self, wx.Icon(TRAY_ICON, wx.BITMAP_TYPE_PNG), TRAY_TOOLTIP)
self.trayicon.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
self.trayicon.Bind(wx.EVT_MENU, self.OnShow, id=wx.ID_OPEN)
1 个回答
0
wxPython使用一种叫做AcceleratorTable的东西来管理“热键”或“快捷键”,你可以随便怎么称呼它们。就像你可以定义和设置一个布局(sizer)一样,你也可以定义和设置一个AcceleratorTable,wxPython会使用它。想了解更多,可以查看这里 http://www.blog.pythonlibrary.org/2010/12/02/wxpython-keyboard-shortcuts-accelerators/
另外,如果你想使用Ctrl-Q或Ctrl-O这些热键,你需要在文本中指定它们,或者把它们添加到加速器表中。如果你在菜单项中添加了格式正确的文本,wxPython会自动识别“这是一个热键”,并把它添加到加速器表中。
self.menu.Append(wx.ID_OPEN, "Show\tCtrl+O")
self.menu.Append(wx.ID_EXIT, "Close\tCtrl+Q")