在 PySimpleGUI(tkinter 版本)上运行时,系统托盘图标为 PNG 和 GIF 格式。PNG、GIF 和 ICO 格式适用于 Wx 和 Qt 端口。

指定“图标”时,可以使用 3 种不同的格式。* filename- 文件名 * data_base64- base64 字节字符串 * ' data- 内存位图或其他“原始”图像

您将在初始化语句和更新方法中找到用于指定这 3 个选项的 3 个参数。

对于测试,您可能会发现使用内置的 PySimpleGUI 图标是一个很好的起点,以确保在引入外部图像资产之前已正确编码所有内容。如果您的图标文件有问题,它会很快告诉您。要使用默认图标运行,请使用以下内容创建系统托盘:

tray = sg.SystemTray(menu=menu_def, data_base64=sg.DEFAULT_BASE64_ICON)

菜单定义

menu_def = ['BLANK', ['&Open', '&Save', ['1', '2', ['a', 'b']], '!&Properties', 'E&xit']]

使用列表定义菜单。“菜单条目”是一个字符串,它指定: * 显示的文本 * 键盘快捷键 * 键

有关在菜单中使用键的更多信息,请参阅菜单键部分。

没有键和键盘快捷键的条目是一个简单的字符串 'Menu Item'

如果您想让“M”成为键盘快捷键,&请在作为快捷键的字母前面放置一个。 '&Menu Item'

您可以添加“键”以使菜单项独一无二,或者作为标识菜单项的另一种方式,而不是显示的文本。通过放置::在文本之后,键被添加到文本部分。

'Menu Item::key'

第一个条目可以忽略。'BLANK' 被选为本例。之所以这样,是因为通常您会在菜单栏上的某个标题下指定这些菜单。但是这里没有标题,所以它填充了你想要的任何值。

分隔符 如果您想要两个项目之间的分隔符,请添加条目'---',它将在菜单中的该位置添加一个分隔符项。

禁用的菜单项

如果要禁用菜单条目,!请在菜单条目之前放置 a

系统托盘方法

阅读 - 阅读上下文菜单或检查事件

def Read(timeout=None)
'''
Reads the context menu
:param timeout: Optional. Any value other than None indicates a non-blocking read
:return: String representing meny item chosen. None if nothing read.
'''

timeout参数指定等待事件发生的时间。如果在超时期限内没有发生任何事情,则返回“超时事件”。这些类型的读取使得异步运行成为可能。要以非阻塞方式运行,timeout=0请在 Read 调用上指定。

读取返回所选菜单项的菜单文本,并带有键。如果您指定Open::key为菜单项,并且用户单击Open,那么您将Open::key在读取完成后收到字符串。

读取特殊返回值

除了菜单项之外,Read 调用还可以返回几个特殊值。他们包括:

EVENT_SYSTEM_TRAY_ICON_DOUBLE_CLICKED - 托盘图标被双击 EVENT_SYSTEM_TRAY_ICON_ACTIVATED - 托盘图标被单击 EVENT_SYSTEM_TRAY_MESSAGE_CLICKED - 消息气球被点击 如果没有事件可用,则返回 TIMEOUT_KEY 如果在读取调用中设置了超时值

隐藏

隐藏图标。请注意,隐藏图标时不会显示消息气球。

def Hide()

关闭

和 hide 做同样的事情

def Close()

取消隐藏

显示以前隐藏的图标

def UnHide()

显示消息

在系统托盘区域的图标上方显示一个气球。您可以指定自己的图标显示在气球中,也可以设置messageicon为预设值之一。

此消息有一个自定义图标。

预设messageicon值为:

SYSTEM_TRAY_MESSAGE_ICON_INFORMATION
SYSTEM_TRAY_MESSAGE_ICON_WARNING
SYSTEM_TRAY_MESSAGE_ICON_CRITICAL
SYSTEM_TRAY_MESSAGE_ICON_NOICON
ShowMessage(title, message, filename=None, data=None, data_base64=None, messageicon=None, time=10000):
'''
Shows a balloon above icon in system tray
:param title: Title shown in balloon
:param message: Message to be displayed
:param filename: Optional icon filename
:param data: Optional in-ram icon
:param data_base64: Optional base64 icon
:param time: How long to display message in milliseconds :return:
'''

请注意,在 Windows 上,可能需要更改注册表才能看到消息气球。要解决此问题,您必须创建在此屏幕截图中看到的 DWORD。

更新

您可以更新 SystemTray 对象中的任何这些项目 * 菜单定义 * 图标 * 工具提示

全部更改或仅更改 1 个。

通知类方法

除了能够通过系统托盘显示消息之外,tkinter 端口还具有能够显示系统托盘消息而无需定义系统托盘对象的附加功能。您可以简单地显示一个通知窗口。这也许消除了使用 ptoaster 包的需要?

该方法是“类方法”,这意味着您可以直接调用它,而无需先创建对象的实例。要显示通知窗口,请调用SystemTray.notify

这行代码

sg.SystemTray.notify('Notification Title', 'This is the notification message')

将显示此窗口,淡入淡出:

这是一个阻塞调用,因此如果您正在淡入和淡出窗口,预计它需要几秒钟。有一些选项可以控制淡入淡出、显示多长时间、alpha 通道等。请参阅本文档末尾的调用签名

pysimplegui之系统托盘图标创建的更多相关文章

  1. Atitit 软件项目系统托盘图标解决方案

    Atitit 软件项目系统托盘图标解决方案 1.1. Nodejs   node-webkit还实现了本地化的API,例如菜单栏,系统的托盘图标支持1 1.2. Java c# qt c++1 1.3 ...

  2. Qt 添加程序图标和系统托盘图标

    添加程序图标 第一种方法: 1.创建程序的时候,选择添加默认图标 2.替换程序目录下的ico文件,编译生成即可. 第二种方法: 比较适合一开始没有添加程序图标的情况 1.项目右键-->添加--& ...

  3. C# 系统托盘图标

    C# 系统托盘图标 WPF NotifyIcon 资料 网址: http://www.codeproject.com/Articles/36468/WPF-NotifyIcon http://www. ...

  4. ubuntu系统下创建软件桌面快捷方式

    转自ubuntu系统下创建软件桌面快捷方式 默认情况下,ubuntu会将自动安装的软件快捷方式保存在/usr/share/applications目录下,如果我们要创建桌面快捷方式,只需要右键-复制- ...

  5. Inno Setup 系统托盘图标插件 TrayIconCtrl V1.5

    原文 http://restools.hanzify.org/article.asp?id=93 V1.5 修正在某些 Windows 平台上(例如 Windows XP SP3)不能正常运行的问题. ...

  6. JavaSE 初学系统托盘图标SystemTray类

    文章目录 1.预备知识 2.使系统托盘显示图标 3.添加提示 4.添加弹出菜单 设置Java程序的系统托盘图标,用到SystemTray类和TrayIcon类. 1.预备知识 JavaAPI对于Sys ...

  7. C#动态系统托盘图标

    C#动态系统托盘图标 利用timer组件定时执行变化. using System; using System.Windows.Forms; namespace DynamicStockIcon { p ...

  8. 小度wifi在window server2008R2系统下创建不了

    小度wifi在window server2008R2系统下创建的时候会一直显示正在创建,然后又消失的情况.这是因为win server 2008下默认的无线lan服务没开启 解决方法: 在“服务管理器 ...

  9. windows API 创建系统托盘图标

    系统托盘在我们使用的程序中很普遍,下面我们来看一个很不错的例子,使用Win32 API实现,对理解系统托盘有些帮助. [cpp] view plaincopy #include <windows ...

  10. Qt之任务栏系统托盘图标

    转自  --> http://blog.csdn.net/qivan/article/details/7506306 托盘图标,一个自己脑子出现很久的词,可惜自己都没动手去实现.最近看见的,听见 ...

随机推荐

  1. CentOS安装并查看lm_sensors CPU温度监控

    CentOS安装并查看lm_sensors 首先查看是否安装rpm包: [root@localhost home]# rpm -qa|grep sensors lm_sensors-libs-3.1. ...

  2. List,Set,Map存取元素各有什么特点 hashMap、hashTable的区别 Arraylist和linkedList的区别

    1.List,Set,Map存取元素各有什么特点? 1.存放 (1)List存放元素是有序,可重复 (2)Set存放元素无序,不可重复 (3)Map元素键值对形式存放,键无序不可重复,值可重复 2.取 ...

  3. JavaScript基础学习之一

    目录 let和var之间的区别 作用域不同 变量提升 暂时性死区(temporal dead zone,简称 TDZ) 相同作用域下的重复声明 脚本调用 数据类型 Boolean Object 对象 ...

  4. Spring Framework学习总结

    一.Spring 概述 Spring 有两个核心部分: IoC 和 AOP. Spring 是一种基于 Bean 的编程技术,它深刻地改变着 Java 开发世界.Spring 使用简单.基本的 Jav ...

  5. @click使用三元运算符

    @click="scope.row.status == 1 ? '' :  blockUp(scope.row) "

  6. 贪心算法(Java)

    贪心算法 文章目录 贪心算法 0.写在前面 1.贪心算法的基本要素 1.1 贪心选择性质 1.2 最优子结构性质 1.3 贪心算法与动态规划算法的差异 2.贪心算法的特点 3.贪心法的正确性证明 4. ...

  7. redis基础-redis事务

    学习总结 原文:https://juejin.im/post/5d29ac845188252cc75e2d5c redis事务: redis是否有事务? redis是有事务的.命令如下: Redis事 ...

  8. 树莓派利用摄像头实现web在线监控

    1.https://shumeipai.nxez.com/2021/10/21/raspberry-pi-usb-camera-to-realize-remote-network-monitoring ...

  9. 我亲自整理的Tampermonkey(以下简称tm)v4.13.6136的编辑器按键映射(基于联想笔记本键盘+win10+火狐浏览器企业版)

    警告:你可以对该随笔内容进行转载,但必须写明其来源网址,以及其作者是博客园的zqdlly,否则后果自负!不要小看了我,我一定会让你付出你应得的成本. 0. 家喻户晓的 键 原生comment myMe ...

  10. OSPF故障诊断