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 托盘图标,一个自己脑子出现很久的词,可惜自己都没动手去实现.最近看见的,听见 ...
随机推荐
- UE C++教程之接口 UINTERFACE
我是谁不重要,重要的是,我能做什么. 近期笔者在进行UE的开发时,实现多武器的换弹与开火需要用到接口.而笔者以前是做Unity开发的,遂没有使用过UE C++的UINTERFACE,而这个接口在使用过 ...
- cobbler安装CentOS-8系统
cobbler安装CentOS-8系统 cobbler 1. cobbler简介 2. cobbler服务端部署 3. 客户端安装 4. 定制安装 1. cobbler简介 Cobbler是一个Lin ...
- Activity基础知识
Activity 一.Activity是什么 Activity是一种可以包含用户界面的组件,主要用于和用户进行交互.一个应用程序可以包含零个或多个活动. 二.活动的基本用法 1. 手动创建活动 打 ...
- vue中模块化后mapState的使用
代码如下: 相当于声明了一个变量name,然后以state入参取得其modules文件夹中user文件里的name属性.因为在模块(如user)中,在抛出时的export default中添加了一句: ...
- Qt打印不同颜色
qCritical()<<"\033[47;31m"<<"打印的字符串"<<"\033[m"; \033 ...
- Vue+SSM+Element-Ui实现前后端分离(1)
前言:最近学习vue,就突发奇想,小菜鸟的我是时候锻炼锻炼自己.闲话不说,整起 <-_-> 整体规划:先搭建前端,接下来后端,最后整合. 一.创建vue项目 1.安装nodejs( 傻瓜式 ...
- JavaScript基础学习之二
目录 JavaScript HTML DOM事件 事件触发1 事件触发2 addEventListener() 事件冒泡或事件捕获? 事件委托 removeEventListener() 方法 事件对 ...
- COM调用 – VB、PB
本文使用Delphi和C++创建CRC32的COM文件(Dll). VB: V9.0 PB: V8.0 Delphi创建的文件,提供给VB9调用:C++创建的文件,提供给PB8调用. 一.VB部分 C ...
- vue3学习大全(1)
# vue3.0 Vue3.0 在北京时间2020年9月19 日凌晨,发布了 3.0 版本,代号:*One Piece* ## 1.新特性 Vue 3 中一些需要关注的新功能包括: - [组合式 AP ...
- 深入理解css 笔记(6)
网格布局:flexbox 彻底改变了网页布局方式,但这只是开始.它还有一个大哥:另一个称作网格布局模块的新规范.这两个规范提供了一种前所未有的全功能布局引擎.跟 flexbox 类似,网格布局也是作用 ...