在系统托盘应用程序的菜单项前面设置图标

hehe_br

是否可以在下面的系统托盘应用程序中的菜单项“顶部菜单、中间菜单、最后一个菜单”前设置自定义图标?

#!/usr/bin/python
# -*- coding: utf-8 -*-

import wx
import sys

TRAY_TOOLTIP = 'Tray App'
TRAY_ICON = '/usr/share/icons/hicolor/32x32/apps/distributor.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, frame):
        self.frame = frame
        super(TaskBarIcon, self).__init__()
        self.set_icon(TRAY_ICON)

    def CreatePopupMenu(self):
        menu = wx.Menu()

        # Top Menu
        create_menu_item(menu, 'Top Menu', self.TopMenu)
        menu.AppendSeparator()

        # Middle Menu
        create_menu_item(menu, 'Middle Menu', self.MiddleMenu)

        # exit and Info
        menu.AppendSeparator()
        create_menu_item(menu, 'Last Menu', self.LastMenu)

        create_menu_item(menu, 'Exit', self.ExitMenu)

        return menu

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

    def TopMenu(self, event):
        print 'This is from Top Menu!'

    def MiddleMenu(self, event):
        print 'This is from Middle Menu!'

    def LastMenu(self, event):
        print 'This is from Last Menu!'

    def ExitMenu(self, event):
        wx.CallAfter(self.Destroy)
        self.frame.Close()

class App(wx.App):
    def OnInit(self):
        frame=wx.Frame(None)
        self.SetTopWindow(frame)
        TaskBarIcon(frame)
        return True

def main():
    app = App(False)
    app.MainLoop()


if __name__ == '__main__':
    main()

我试图找到类似的东西,但我找不到任何相关的东西。我看到 C# 允许在菜单项前面设置图标,但我不确定它是否也适用于 python。感谢您的帮助和关注。

hehe_br

经过一些研究,反复试验,我发现我必须icon在菜单的定义上使用变量

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

并在菜单项的定义中包含图标的路径:

        create_menu_item(menu, 'Title', self.Title, icon='icon.png')

结果: 在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将应用程序的图标放入系统托盘

系统托盘/任务栏图标/带有通用应用程序的通知图标

应用程序图标未出现在Linux Mint 17.3的系统托盘中

如何使用GNOME在Ubuntu 18.04上的系统托盘中删除应用程序图标

如何在“应用程序”菜单中添加系统范围的菜单项?

为XFCE中的应用程序添加图标/菜单项

使用 winapp 驱动程序右键单击系统托盘中的应用程序

双击底部导航菜单项退出应用程序

如何制作仅在系统托盘中运行的.NET Windows窗体应用程序?

如何将Java应用程序放入系统托盘?

当应用程序在系统托盘中时显示工具提示?

带有Clojure的Ubuntu上的GUI系统托盘应用程序

如何在Linux中为系统托盘编写应用程序

最小化系统托盘/通知区域中的应用程序WhatsApp

BASH可以在系统托盘中显示为应用程序指示符吗?

对于某些应用程序,最新更新后未检测到系统托盘

如何使用系统托盘/任务栏图标制作跨平台 Kivy 应用程序,即使应用程序未聚焦/在任务栏模式下也能检测键盘输入

从系统托盘中删除图标

不需要的系统托盘图标

Xfce中的系统托盘图标加倍

如何更改goldendict系统托盘图标?

Windows 10系统托盘减少图标

如果菜单项的图标来自应用程序可绘制文件夹,则该图标不会显示在操作栏中

如何在关闭ApplicationWindow对象时将应用程序最小化到系统托盘上?

macOS / Qt:禁用应用程序停靠菜单上的“退出”菜单项

右键单击系统托盘中的通知图标不显示上下文菜单

使用Java的Mac OS中的系统托盘(附加菜单)图标

在菜单项上检索托盘位置

如何在应用程序工具栏中增加菜单项图标和标题之间的填充或边距?