gpt4 book ai didi

python-3.x - Python 3 Wx 更改托盘图标

转载 作者:行者123 更新时间:2023-12-04 01:57:15 29 4
gpt4 key购买 nike

我正在使用 WxPython(phoenix 新版本)在程序运行时在托盘栏上有一个图标,但我会通过一些事件来更改所使用的图标。

我找到了这个很好的例子来开始工作:Quick and easy: trayicon with 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()

和图像: toggle1.png toggle2.png

在行动中: enter image description here

关于python-3.x - Python 3 Wx 更改托盘图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49758794/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com