我在寻找更改**pystray**任务栏通知标题的方法时遇到了问题。它似乎从某个地方获取了默认值“Python”。请参见下图:
在documentation中,没有额外的参数来改变通知图标的标题,我怎样才能找到一种方法来改变标题值为我想要的东西呢?
下面是一个工作代码示例:
from tkinter import *
from pystray import MenuItem as item
from PIL import Image, ImageTk
from res import * #here is my base64 encoded icon. Variable icon_base64.
from base64 import b64decode
import pystray
import base64
pic=ImageTk.BytesIO(icon_base64) #transfering base64 to bytes
def run_icon():
#image = Image.open("icon.ico") #uncomment this to use a standard image, isntead of base64.
title="Tray title"
image=Image.open(pic) #comment this if using standard way of image
menu = (item('test1', lambda: show(),default = True), item('Exit', lambda: exit()))
global icon
icon = pystray.Icon("name", image, title, menu)
icon.run()
def show_notification(text):
icon.notify(text,"My test notification sub title")
def show():
print("show")
def show():
print("exit")
run_icon()
sleep(3)
show_notification("test")
更新:我突然想到一个主意-也许这个“Python”是从项目名称或程序名称等中取出来的。我应该搜索或添加与命名参数相关的代码(在Win10操作系统上)吗?
1条答案
按热度按时间7gyucuyw1#
python.exe
执行。回答您的问题:在Windows中,每个通知的标题来自
File description
属性的值。在您的情况下,标题为"Python",如下所示:鉴于此,您需要将代码转换为独立的可执行文件,并填充一些属性值。这可以通过两个步骤完成:
步骤1
创建VSVersionInfo文件(例如:
version_info.rs
),指示性内容如下:TL; DR:
VSVersionInfo结构的"ffi"部分包含FixedFileInfo结构。
0x4
对应于Windows NT操作系统。0x1
对应于一个应用程序。VSVersionInfo结构的"kids"部分包含具有两个元素的列表:一个字符串文件信息结构和一个可变文件信息结构。
[1033, 1200]
,该值对应于英语(美国)语言和Unicode字符集。步骤2
使用类似**PyInstaller的工具将程序转换为独立的可执行文件。要使用PyInstaller**,首先需要使用类似pip的软件包安装程序安装它:
然后,您可以使用以下PyInstaller命令将程序打包为可执行文件,并使用第一步中的
version_info.rs
文件设置其版本信息:结果
运行可执行文件(位于dist目录中)后,您会发现通知标题现在具有您在第一步中分配给FileDescription属性的值。