一起运行 Tkinter 窗口和 PysTray 图标

2024-03-04

我正在构建一个 tkinter gui 项目,并且正在寻找使用 tkinter 窗口运行托盘图标的方法。
我发现 Pystray 库可以做到这一点,但现在我正在尝试弄清楚如何将这个库(托盘图标)与 tkinter 窗口一起使用,
我设置了当用户退出窗口时它只会退出窗口:
self.protocol('WM_DELETE_WINDOW', self.withdraw)
我想用托盘图标将其带回来..有人知道该怎么做吗?
编辑:到目前为止,我刚刚编写了这段代码(它们没有一起运行,但也很好):

from pystray import MenuItem as item
import pystray
from PIL import Image
import tkinter as tk

def quit_window(icon, item):
    icon.stop()
    #window.destroy()

def show_window(icon, item):
    icon.stop()
    #window.deiconify()

def withdraw_window(window):    
    window.withdraw()
    image = Image.open("image.ico")
    menu = (item('Quit', quit_window), item('Show', show_window))
    icon = pystray.Icon("name", image, "title", menu)
    icon.run()

def main():
    window = tk.Tk() 
    window.title("Welcome")
    window.protocol('WM_DELETE_WINDOW', lambda: withdraw_window(window))
    window.mainloop()
main()

终于我明白了
现在我只需要把它与我的主要代码结合起来,我希望这个代码也对其他人有帮助......

from pystray import MenuItem as item
import pystray
from PIL import Image
import tkinter as tk

window = tk.Tk()
window.title("Welcome")

def quit_window(icon, item):
    icon.stop()
    window.destroy()

def show_window(icon, item):
    icon.stop()
    window.after(0,window.deiconify)

def withdraw_window():  
    window.withdraw()
    image = Image.open("image.ico")
    menu = (item('Quit', quit_window), item('Show', show_window))
    icon = pystray.Icon("name", image, "title", menu)
    icon.run()

window.protocol('WM_DELETE_WINDOW', withdraw_window)
window.mainloop()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一起运行 Tkinter 窗口和 PysTray 图标 的相关文章

随机推荐

  • VarBinary 与 Image SQL Server 数据类型存储二进制数据?

    我需要将二进制文件存储到 SQL Server 数据库 Varbinary 和 Image 中哪种数据类型更好 由于图像已被弃用 您应该使用 varbinary per 微软 http msdn microsoft com en us li
  • 无锁堆栈 - 这是 c++11 宽松原子的正确用法吗?可以证明吗?

    我已经为需要跨线程同步的非常简单的数据编写了一个容器 我想要顶级的表现 我不想使用锁 我想使用 宽松 的原子 部分是为了增加一点额外的魅力 部分是为了真正理解它们 我已经为此做了很多工作 现在这段代码通过了我对其进行的所有测试 但这并不完全
  • pytest django:无法访问固定装置拆卸中的数据库

    我需要在使用夹具后显式删除它 我知道 pytest django 默认情况下会在拆卸时删除所有对象 但在这种特殊情况下 我需要手动执行此操作 然而 虽然我的测试被标记为pytest mark django db 我能够创建一个夹具 但在经过
  • JBoss7 + PostgreSQL 新的缺失/不满足的依赖关系

    我正在将项目从 JBoss3 迁移到 JBoss7 我昨天才开始重新配置我的standalone xml module xml 和persistence xml 在 JBoss 模块文件夹中 我创建了 org postgres main 目
  • 有什么方法可以解决 C4772 错误而无需注册 DLL?

    我正在维护一个 VS2010 项目 其中有许多交叉引用的 COM 库 我正在尝试配置该项目 使其可以从安装了 VS2010 的随机工作站构建 工作站可以是 32 位和 64 位 因此如果我将项目配置为 注册输出 则构建将无法在 32 位计算
  • 删除 struts 2 中的转换验证消息或使其通用

    在我的 struts2 应用程序中 我有一个名为 CarrierNo 的字段 它接受整数 当我将字符串放入其中时 会给出以下验证错误消息 Invalid field value for field carrierNo 我可以像这样在属性文件
  • 有没有一种简单的方法来计算两个数组之间的差异[重复]

    这个问题在这里已经有答案了 我正在尝试计算 Swift 中两个数组中值之间的差异 我想减去两个数组之间每个索引处的值 我尝试执行以下操作 var array1 Double 1 2 3 4 5 var array2 Double 2 3 4
  • 存储过程的命名约定是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 GitHub 上使用 Laravel 包的 PR?

    当我想在 GitHub 上对 Laravel 包发出拉取请求时 我会按以下方式进行操作 创建新的 Laravel 项目 需要并安装包 从供应商文件夹中的项目中删除附加文件 Fork GitHub 并将文件克隆到项目文件夹中 更改打包并测试所
  • AJAX DJango 从多个文件字段获取文件

    我正在使用 AJAX 和 DJango 进行多个文件上传 但遇到问题 如何从字段输入获取文件并将其推送到data HTML
  • NLTK 使用语料库标记西班牙语单词

    我正在尝试学习如何使用 NLTK 标记西班牙语单词 来自NLTK书 http nltk org book ch05 html 使用它们的示例来标记英语单词非常容易 因为我对 nltk 和所有语言处理都很陌生 所以我对如何进行感到非常困惑 我
  • 在 Java 中分割命令行

    在 Java 中解析类似 shell 的命令行的推荐方法是什么 我的意思并不是说在选项已经处于数组形式时处理选项 例如处理 x 等 已经有很多关于此的问题和答案 不 我的意思是把完整的命令字符串分割成 令牌 我需要转换一个字符串 例如 us
  • 如何在 django 模板中减去两个 datetime.time 值,以及如何将持续时间格式化为小时、分钟

    在 django 应用程序中 我发送了一个列表Entry对象到模板 每个Entry对象有一个开始时间和结束时间 它们是 datetime time 值 从TimeFields在表单上 在列出条目对象时 我需要显示每个条目的持续时间 在模型中
  • 将 UserControl 序列化为 xaml,但不序列化其子控件?

    NET 4 0 中的 XAML 序列化堆栈进行了相当多的更改 其中一项更改是 当序列化 UserControl 时 您不仅可以获得控件本身 还可以获得其所有子控件 var sb new StringBuilder var writer Xm
  • 创建链接服务器和数据库别名

    我有两台服务器 Server1 和 Server2 在两台服务器上我都有一个名为 QAI 的数据库 有没有一种方法可以创建一个链接服务器 其别名从 Server2 到 Server1 而不是 服务器1 QAI dbo tbBlah 将其别名
  • 使用 Windows 调度程序运行 jar 文件

    我有 jar 文件 我想从 Windows 7 中的 Windows 调度程序运行该文件 我已经给出了路径java exe在路径 脚本中和 jar c abc ab jar在参数字段中 但它不运行 我也曾在bat文件的帮助下尝试过 但它无法
  • Bash:在 OS X 下查找字符串中字符的位置

    有没有办法找到字符串中第一个字符的位置Bash under Mac OS X 就像是 stringZ abcABC123ABCabc 6 echo expr index stringZ C12 C position 如中所述高级 Bash
  • 如何在 Python 中重新运行代码?

    我有这个单词解扰器游戏 仅在 CMD 或 python shell 中运行 当用户正确或错误地猜测单词时 它会显示 按任意键再次播放 我怎样才能让它重新开始 在评估用户的输入后不要让程序退出 相反 在循环中执行此操作 例如 一个甚至不使用函
  • CSS:在同一行有3个div,中间的div占据剩余空间

    我正在构建一个工具栏 我希望以下示例中的黄色部分占据整个左侧空间 白色 http jsfiddle net MWjGH 1 http jsfiddle net MWjGH 1 div class left Some content div
  • 一起运行 Tkinter 窗口和 PysTray 图标

    我正在构建一个 tkinter gui 项目 并且正在寻找使用 tkinter 窗口运行托盘图标的方法 我发现 Pystray 库可以做到这一点 但现在我正在尝试弄清楚如何将这个库 托盘图标 与 tkinter 窗口一起使用 我设置了当用户