我正在设计一个我想在后台运行的应用程序.没有必要进行任何用户交互,因此我希望应用程序无形地运行以保存系统托盘图标.我希望该图标有一个菜单,只需在记事本中打开配置/帮助文件.有人能指出我正确的方向还是提供一个例子?
你可以更干净地做到这一点,但我一段时间使用了一些样本我能够创建一个类来处理任务栏图标的基本构造.
TaskBarIcon.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()
Run Code Online (Sandbox Code Playgroud)
在你的Frame的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)
Run Code Online (Sandbox Code Playgroud)
现在只需将此功能添加到您的框架中,您应该设置:
def OnIconify(self, event):
self.Hide()
Run Code Online (Sandbox Code Playgroud)
只需记住编辑Icon类中的项目以满足您的需求.
| 归档时间: |
|
| 查看次数: |
2527 次 |
| 最近记录: |