import wx
import wx.adv
class Balloon(wx.adv.TaskBarIcon):
ICON = "logo.ico"
def __init__(self):
wx.adv.TaskBarIcon.__init__(self)
self.SetIcon(wx.Icon(self.ICON))
# Menu数据
def setMenuItemData(self):
return (("Config", self.OnConfig), ("About", self.OnAbout), ("Close", self.OnClose))
# 创建菜单
def CreatePopupMenu(self):
menu = wx.Menu()
for itemName, itemHandler in self.setMenuItemData():
if not itemName: # itemName为空就添加分隔符
menu.AppendSeparator()
continue
menuItem = wx.MenuItem(None, wx.ID_ANY, text=itemName, kind=wx.ITEM_NORMAL) # 创建菜单项
menu.AppendItem(menuItem) # 将菜单项添加到菜单
self.Bind(wx.EVT_MENU, itemHandler, menuItem)
return menu
def OnConfig(self, event):
pass
def OnAbout(self, event):
pass
def OnClose(self, event):
pass
class myFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.taskBarIcon = Balloon()
if __name__ == '__main__':
app = wx.App()
frame = myFrame()
frame.Show()
app.MainLoop()
一个基本托盘
deepin 下的效果
__init__ | 默认构造函数。 |
CreatePopupMenu | 当用户请求弹出菜单时调用此方法。 |
Destroy | 此方法类似于wx.Window.Destroy 并且可用于安排任务栏图标对象的延迟销毁:它将在下一个事件循环迭代期间删除,这使任务栏图标可以在销毁它之前处理所有未决事件。 |
IsAvailable | 返回True 在运行应用程序的桌面环境中系统托盘是否可用。 |
IsIconInstalled | 返回True 是否SetIcon 在没有后续调用的情况下被调用RemoveIcon 。 |
IsOk | 返回True 对象是否成功初始化。 |
PopupMenu | 在当前鼠标位置弹出一个菜单。 |
RemoveIcon | 删除先前用设置的图标SetIcon 。 |
SetIcon | 设置图标和可选的工具提示文本 |
ShowBalloon | 显示气球通知 |
事件
绑定到以下事件类型的处理程序将接收 wx.adv.TaskBarIconEvent事件.
如果应用程序只需响应鼠标单击弹出菜单,最好覆盖wx.adv.TaskBarIcon.CreatePopupMenu
- EVT_TASKBAR_MOVE:处理
wxEVT_TASKBAR_MOVE
事件。 - EVT_TASKBAR_LEFT_DOWN:处理
wxEVT_TASKBAR_LEFT_DOWN
事件。 - EVT_TASKBAR_LEFT_UP:处理
wxEVT_TASKBAR_LEFT_UP
事件。 - EVT_TASKBAR_RIGHT_DOWN:处理
wxEVT_TASKBAR_RIGHT_DOWN
事件。 - EVT_TASKBAR_RIGHT_UP:处理
wxEVT_TASKBAR_RIGHT_UP
事件。 - EVT_TASKBAR_LEFT_DCLICK:处理
wxEVT_TASKBAR_LEFT_DCLICK
事件。 - EVT_TASKBAR_RIGHT_DCLICK:处理
wxEVT_TASKBAR_RIGHT_DCLICK
事件。 - EVT_TASKBAR_CLICK: