wxPython系统托盘图标

时间:2011-09-07 06:18:52

标签: python wxpython wxwidgets

我正在尝试在我的应用程序的系统托盘中实现一个图标但是我有两个问题。

首先,虽然我使用的图标是带有透明背景的.png,但图标的背景却是丑陋的。

其次,Icon有一个右键菜单,其中包含“显示”和“关闭”选项,但由于未知原因,它们旁边都会显示“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 :(得分: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")