python - 快速简便 : trayicon with python?

标签 python wxpython pyqt systray tray

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

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

最佳答案

适用于 Windows 和 Gnome

给你! wxPython 是炸弹。改编 self 的Feed Notifier 的来源应用。

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()

关于python - 快速简便 : trayicon with python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6389580/

相关文章:

python - 使用 python 绘制直方图时从文件中读取数据的方法?

python - 跨多个时间段计算前 10 名或前 X 名列表的有效方法

python-3.x - 如何修复 wxPython 模块中 wxPyDeprecationWarning 的警告?

python - wxPython - GC.DrawText 删除背景位图

python - 如何使 PyQt5 QTreeview 节点在代码中可编辑?

python - 如何将 Python 捆绑到 macos .app 应用程序中?

python - 用于ubuntu的pyqt gui应用程序打包

python - Numpy savetxt 将一维数组保存为列

python - 使用NLTK通过BeautifulSoup和NaiveBayes对网站内容问题进行文档分类

python - 如何在wxPython中链接多个wx.Dialog