Skip to main content
 首页 » 编程设计

python之wxpython 系统托盘图标菜单

2025年05月04日9lonelyxmas

我正在设计一个我想在后台运行的应用程序。不需要任何用户交互,所以我希望应用程序以不可见的方式运行,但系统托盘图标除外。我希望该图标有一个菜单,可以在记事本中打开配置/帮助文件。有人可以指出我正确的方向或提供一个例子吗?

请您参考如下方法:

您可能可以更干净地完成此操作,但我前一段时间使用了一些示例,我能够为自己创建一个类来处理任务栏图标的基本构造。

任务栏图标.py

import wx 
 
 
ID_SHOW_OPTION = wx.NewId() 
ID_EDIT_OPTION = wx.NewId() 
 
 
class Icon(wx.TaskBarIcon): 
 
    def __init__(self, parent, icon, tooltip): 
        wx.TaskBarIcon.__init__(self) 
        self.SetIcon(icon, tooltip) 
        self.parent = parent 
        self.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.OnLeftDClick) 
        self.CreateMenu() 
 
    def CreateMenu(self): 
        self.Bind(wx.EVT_TASKBAR_RIGHT_UP, self.OnPopup) 
        self.menu = wx.Menu() 
        self.menu.Append(ID_SHOW_OPTION, '&Show Option 1') 
        self.menu.Append(ID_EDIT_OPTION, '&Edit Option 2') 
        self.menu.AppendSeparator() 
        self.menu.Append(wx.ID_EXIT, 'E&xit') 
 
    def OnPopup(self, event): 
        self.PopupMenu(self.menu) 
 
    def OnLeftDClick(self, event): 
        if self.parent.IsIconized(): 
            self.parent.Iconize(False) 
        if not self.parent.IsShown(): 
            self.parent.Show(True) 
        self.parent.Raise() 

在您的框架的 init() 中,添加以下两行:

self.TrayIcon  = tbi.Icon(self, wx.Icon("C:\\YourIcon.png", wx.BITMAP_TYPE_PNG), "ToolTip Help Text Here") 
self.Bind(wx.EVT_ICONIZE, self.OnIconify) 

现在只需将此功能添加到您的框架中,您就应该设置好了:

def OnIconify(self, event): 
    self.Hide() 

请记住根据您的需要编辑 Icon 类中的项目。