小编典典

快速简便:使用Python的trayicon?

python

我只需要一个简单的示例,说明如何轻松地将python图标放置在我的系统托盘上。这意味着:我运行该程序,没有窗口出现,只有一个托盘图标(我有一个png文件)出现在系统托盘中,当我右键单击它时,菜单上会显示一些选项(当我单击时,在一个选项上,将运行一个函数)。那可能吗?我根本不需要任何窗户…

示例/代码片段非常感谢!:D


阅读 212

收藏
2020-12-20

共1个答案

小编典典

对于Windows和Gnome

来呀!wxPython是炸弹。改编自我的Feed通知程序应用程序的源代码。

import wx

TRAY_TOOLTIP = 'System Tray Demo'
TRAY_ICON = 'icon.png'


def create_menu_item(menu, label, func):
    item = wx.MenuItem(menu, -1, label)
    menu.Bind(wx.EVT_MENU, func, id=item.GetId())
    menu.AppendItem(item)
    return item


class TaskBarIcon(wx.TaskBarIcon):
    def __init__(self):
        super(TaskBarIcon, self).__init__()
        self.set_icon(TRAY_ICON)
        self.Bind(wx.EVT_TASKBAR_LEFT_DOWN, self.on_left_down)

    def CreatePopupMenu(self):
        menu = wx.Menu()
        create_menu_item(menu, 'Say Hello', self.on_hello)
        menu.AppendSeparator()
        create_menu_item(menu, 'Exit', self.on_exit)
        return menu

    def set_icon(self, path):
        icon = wx.IconFromBitmap(wx.Bitmap(path))
        self.SetIcon(icon, TRAY_TOOLTIP)

    def on_left_down(self, event):
        print 'Tray icon was left-clicked.'

    def on_hello(self, event):
        print 'Hello, world!'

    def on_exit(self, event):
        wx.CallAfter(self.Destroy)


def main():
    app = wx.PySimpleApp()
    TaskBarIcon()
    app.MainLoop()


if __name__ == '__main__':
    main()
2020-12-20