Python 3.x Python3 Wx更改托盘图标
我使用WxPython(phoenix新版本)在程序运行时在任务栏上有一个图标,但我会使用一些事件来更改使用的图标 我发现了一个很好的例子来开始工作: 但它没有循环浏览图标的例子 在导入之后,它有以下行:Python 3.x Python3 Wx更改托盘图标,python-3.x,wxpython,system-tray,Python 3.x,Wxpython,System Tray,我使用WxPython(phoenix新版本)在程序运行时在任务栏上有一个图标,但我会使用一些事件来更改使用的图标 我发现了一个很好的例子来开始工作: 但它没有循环浏览图标的例子 在导入之后,它有以下行: TRAY_ICON = 'icon.png' 我尝试将其作为一种变量,并将以下行添加到一个事件中(它有一些模拟事件,如右键单击hellow world) TRAY_ICON = 'icon2.png' 但它不起作用=// 我只在c语言中找到了一些示例,在python中找到了一个示例,但使用
TRAY_ICON = 'icon.png'
我尝试将其作为一种变量,并将以下行添加到一个事件中(它有一些模拟事件,如右键单击hellow world)
TRAY_ICON = 'icon2.png'
但它不起作用=//
我只在c语言中找到了一些示例,在python中找到了一个示例,但使用了一个非常复杂的win32替代方案,我无法理解这应该为您提供足够的解决问题的方法
import wx
import wx.adv
ICON = 'toggle1.png'
ICONS = ["toggle1.png", "toggle2.png"]
X=[1,0]
class TaskBarIcon(wx.adv.TaskBarIcon):
def __init__(self, frame):
self.frame = frame
self.toggle = 0
wx.adv.TaskBarIcon.__init__(self)
self.Bind(wx.adv.EVT_TASKBAR_LEFT_DOWN, self.OnToggle)
self.OnSetIcon(ICON)
def CreatePopupMenu(self):
menu = wx.Menu()
togglem = wx.MenuItem(menu, wx.NewId(), 'Toggle Icon')
menu.Bind(wx.EVT_MENU, self.OnToggle, id=togglem.GetId())
menu.Append(togglem)
menu.AppendSeparator()
flashm = wx.MenuItem(menu, wx.NewId(), 'Flash Icon')
menu.Bind(wx.EVT_MENU, self.OnTimer, id=flashm.GetId())
menu.Append(flashm)
menu.AppendSeparator()
quitm = wx.MenuItem(menu, wx.NewId(), 'Quit')
menu.Bind(wx.EVT_MENU, self.OnQuit, id=quitm.GetId())
menu.Append(quitm)
return menu
def OnSetIcon(self, path):
icon = wx.Icon(path)
self.SetIcon(icon, path)
def OnToggle(self, event):
self.toggle=X[self.toggle]
use_icon = ICONS[self.toggle]
self.OnSetIcon(use_icon)
def OnTimer(self,event):
self.timer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self.OnInUseTimer)
self.timer.Start(1000)
def OnInUseTimer(self,event):
self.OnToggle(None)
def OnQuit(self, event):
self.RemoveIcon()
wx.CallAfter(self.Destroy)
self.frame.Close()
if __name__ == '__main__':
app = wx.App()
frame=wx.Frame(None)
TaskBarIcon(frame)
app.MainLoop()
图片如下:
在行动中:
链接答案中相关的行是
self。设置图标(托盘图标)
。您需要在类中调用此方法来更新显示。它可能还需要调用.Refresh()
-我已经很久没有使用wx了。