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 托盘图标,一个自己脑子出现很久的词,可惜自己都没动手去实现.最近看见的,听见 ...
随机推荐
- std::ref
The std::thread constructor copies the supplied values, without converting to the expected argument ...
- OO课程第二阶段(实验和期中试题)总结Blog2
OO课程第二阶段(实验和期中试题)总结Blog2 前言:学习OOP课程的第二阶段已经结束了,在此进行对于知识点,题量,难度的个人看法. 学习OOP课程的第二阶段已经结束了,较第一次阶段学习难度加大,学 ...
- PHP接口跨域问题的解决方案
先来看一下问题 请求头有多余的参数 解决方案是配置允许 详细代码如下: // 可跨域域名列表$domains = [ 'http://localhost:8080', 'http://test.qqq ...
- Spring系列之验证-14
目录 Java Bean 验证 Bean 验证概述 配置 Bean 验证提供程序 注入验证器 配置一个`DataBinder` Spring MVC 3 验证 Java Bean 验证 Bean 验证 ...
- JRebel4.2 使用之前的激活地址失效,需更改新的激活地址
使用 https://jrebel.qekang.com 会报错 把 https://jrebel.qekang.com 换成 http://idea.javatiku.cn/ ,再进行激活,就ok了
- 关于uniapp的事件监听,使用uni.$once和uni.$on导致的重复监听
最近写项目的时候遇到个问题,就是在使用uniapp的事件监听器时出现重复监听问题.一开始我是用的uni.$on去监听事件,然后出现了重复的触发监听.百度了下,官方提示单次触发的建议使用uni.$onc ...
- 当MYSQL报错时
输入mysqld --console查看错误 针对error行进行排查
- Unity学习笔记——坐标转换(1)
1.Center与Pivot的区别 Pivot是模型坐标轴的真实位置,将辅助图标定位在网格的实际轴心点. Center是模型渲染边界的中心. 当包含子物体时,Pivaot模式辅助图标在物体的实际轴心点 ...
- pintia 3-7-5 逆波兰表达式求值 (20 分)
3-7-5 逆波兰表达式求值 (20 分) 逆波兰表示法是一种将运算符(operator)写在操作数(operand)后面 的描述程序(算式)的方法.举个例子,我们平常用中缀表示法描述的算式(1 + ...
- Crypto入门 (十一)easychallenge
前言: 这题跟python有关,可见看懂python代码还是很有必要得,需要有一些python基础才好 easychallenge: 题目: 下载后来发现是一个.pyc为后缀得文件,查找资料可知,该文 ...