简介
TaskBarIcon 用于自定义任务栏图标。 这个类是非常容易使用的。所有需要做的事情
是创建一个图标并调用 SetIcon 来创建用来显示的系统图标,然后重写 CreatePopupMenu方法。TaskBarIcon类将处理其余部分。
需要导入的包
import wx
import wx.adv
# 或者
import wx.adv.TaskBarIcon
函数详解
CreatePopupMenu(self)
GetPopupMenu未 覆盖(重写)的时候,则当用户请求弹出菜单的时候,由库调用该方法创建并显示菜单。如果你喜欢每次创建一个新的菜单而不是重复使用同一菜单,则重写该方法。
返回值
:如果返回值为None,则没有弹出菜单显示出来。
返回为菜单的时候显示菜单。并在取消菜单的时候,立即删除菜单。如果不希望菜单在关闭的时候破坏掉,请改写GetPopupMenu。
SetIcon( self , icon , tooltip="" )
设置显示的图标
icon
:要显示的图标
tooltip
:提示信息,
支持事件列表
事件 | 描述 |
---|---|
wx.adv.EVT_TASKBAR_MOVE | 鼠标在任务栏图标移动 |
wx.EVT_MENU | 请求弹出菜单 |
具体事件查看文档 |
代码示例
class CustomTaskBarIcon(wx.adv.TaskBarIcon):
ID_HELLO = wx.NewId()
ID_HELLO2 = wx.NewId()
def __init__(self):
super(CustomTaskBarIcon, self).__init__()
# Setup
icon = wx.Icon(r"wx.staticbitmap2.png", wx.BITMAP_TYPE_PNG)
self.SetIcon(icon)
# Event Handlers
self.Bind(wx.EVT_MENU, self.OnMenu)
# 重写创建弹出菜单
def CreatePopupMenu(self):
menu = wx.Menu()
menu.Append(CustomTaskBarIcon.ID_HELLO, "HELLO")
menu.Append(CustomTaskBarIcon.ID_HELLO2, "Hi!")
menu.AppendSeparator()
# 退出任务栏图标,不一定退出主程序
menu.Append(wx.ID_CLOSE, "退出")
return menu
def OnMenu(self, event):
evt_id = event.GetId()
if evt_id == CustomTaskBarIcon.ID_HELLO:
wx.MessageBox("Hello World!", "HELLO")
elif evt_id == CustomTaskBarIcon.ID_HELLO2:
wx.MessageBox("Hi Again!", "Hi!")
elif evt_id == wx.ID_CLOSE:
# 退出任务栏图标
self.Destroy()
else:
event.Skip()
class MyFrame(wx.Frame):
def __init__(self, parent, *args, **argv):
super(MyFrame, self).__init__(parent, *args, **argv)
self.taskBarIcon = CustomTaskBarIcon()
self.Bind(wx.EVT_CLOSE,self.OnClose)
def OnClose(self,event):
# 主程序退出,删除任务栏图标
print(self.taskBarIcon)
try:
self.taskBarIcon.Destroy()
except:
pass
self.Destroy()
class MyApp(wx.App):
def OnInit(self):
self.frame = MyFrame(None, title="任务栏图标", size=(600, 400))
self.SetTopWindow(self.frame)
self.frame.Show()
return super().OnInit()
if __name__ == "__main__":
app = MyApp(False)
app.MainLoop()