pysimplegui之系统托盘图标创建
在 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之系统托盘图标创建的更多相关文章
- Atitit 软件项目系统托盘图标解决方案
Atitit 软件项目系统托盘图标解决方案 1.1. Nodejs node-webkit还实现了本地化的API,例如菜单栏,系统的托盘图标支持1 1.2. Java c# qt c++1 1.3 ...
- Qt 添加程序图标和系统托盘图标
添加程序图标 第一种方法: 1.创建程序的时候,选择添加默认图标 2.替换程序目录下的ico文件,编译生成即可. 第二种方法: 比较适合一开始没有添加程序图标的情况 1.项目右键-->添加--& ...
- C# 系统托盘图标
C# 系统托盘图标 WPF NotifyIcon 资料 网址: http://www.codeproject.com/Articles/36468/WPF-NotifyIcon http://www. ...
- ubuntu系统下创建软件桌面快捷方式
转自ubuntu系统下创建软件桌面快捷方式 默认情况下,ubuntu会将自动安装的软件快捷方式保存在/usr/share/applications目录下,如果我们要创建桌面快捷方式,只需要右键-复制- ...
- Inno Setup 系统托盘图标插件 TrayIconCtrl V1.5
原文 http://restools.hanzify.org/article.asp?id=93 V1.5 修正在某些 Windows 平台上(例如 Windows XP SP3)不能正常运行的问题. ...
- JavaSE 初学系统托盘图标SystemTray类
文章目录 1.预备知识 2.使系统托盘显示图标 3.添加提示 4.添加弹出菜单 设置Java程序的系统托盘图标,用到SystemTray类和TrayIcon类. 1.预备知识 JavaAPI对于Sys ...
- C#动态系统托盘图标
C#动态系统托盘图标 利用timer组件定时执行变化. using System; using System.Windows.Forms; namespace DynamicStockIcon { p ...
- 小度wifi在window server2008R2系统下创建不了
小度wifi在window server2008R2系统下创建的时候会一直显示正在创建,然后又消失的情况.这是因为win server 2008下默认的无线lan服务没开启 解决方法: 在“服务管理器 ...
- windows API 创建系统托盘图标
系统托盘在我们使用的程序中很普遍,下面我们来看一个很不错的例子,使用Win32 API实现,对理解系统托盘有些帮助. [cpp] view plaincopy #include <windows ...
- Qt之任务栏系统托盘图标
转自 --> http://blog.csdn.net/qivan/article/details/7506306 托盘图标,一个自己脑子出现很久的词,可惜自己都没动手去实现.最近看见的,听见 ...
随机推荐
- 将SNAPSHOT包上传到Nexus私服
首先确定要上传的仓库的Type为hosted,Policy为Snapshot 上传命令为: mvn deploy:deploy-file -DgroupId=com.ctg.ag -Dartifact ...
- python3GUI--轮播图效果展示By:PyQt5(附源码下载地址)
@ 目录 一.前言 二.展示 1.酷我音乐 2.QQ飞车 3.虎牙 4.网易云音乐 5.英雄联盟 6.英雄联盟(Pro) 7.腾讯视频 三.源代码 1.demo02GUI.py 2.engine.py ...
- OSIDP-线程-04
进程和线程 进程具有两个相互独立的特点: 1.资源所有权:进程包括存放进程映像的虚拟地址空间,具有对资源的控制权. 2.调度/执行:进程具有运行状态和优先级,是可被 OS 调度和分派的实体. 通常将分 ...
- HTML和xml
[html和xml的相同点] html和xml 都是标记语言,都是基于文本编辑和修改的. 都是用于操作系统或数据结构,结构上大致相同. 都可以通过DOM 变成方式来访问. 都可以通过CSS来改变外观 ...
- DBeaver通过phoenix连接云主机的hbase
准备 1.云主机上已经安装好jdk.hadoop.hbase.zookeeper.phoenix,并且在主机上测试连接成功.可参考 https://blog.csdn.net/shangxindeku ...
- TiSpark 初级应用
目前正在使用tispark 进行离线计算,简单记录一下操作过程 一.技术验证 场景:计算每次充电过程中单体最高电压的变化速率 解决方案: 使用tispark 直接访问tidb的数据,采用sp ...
- 在IDEA中通过插件显示每一行代码的最后编辑的人
!!!首先:需要结合Git使用 插件github:https://github.com/zielu/GitToolBox/wiki/Manual 一.安装插件并重启 二.打开设置(重启默认打开) 三. ...
- 会长哥哥帮助安装ubuntu
今晚突然想到要安装虚拟机,因为我原来上的python预科班里面讲解安装虚拟机,但是我当时没有安装上,导致预科班后面的课我没听懂,今天听课讲到字符和编码 所以想到了我的虚拟机,于是今晚很谨慎的求助会长大 ...
- sql server数据库的带返回值的存储和函数的基础使用
准备基本的数据 create table test_table ( id int identity(0,1), name varchar(20), age int, book_name varchar ...
- Adams:一种使接触力(力矩等等)失效的方法
1 第一步:点击"运行脚本". 2 第二步:右击选择"仿真脚本",点击"创建". 3 第三步:选择"脚本类型"为&quo ...