python - 同时运行 Tkinter 窗口和 PysTray 图标

标签 python tkinter systray

我正在构建一个 tkinter gui 项目,我正在寻找使用 tkinter 窗口运行托盘图标的方法。
我发现 Pystray 库可以做到这一点,但现在我正试图弄清楚如何将这个库(托盘图标)与 tkinter 窗口一起使用,
我在用户退出 winodw 时设置它,它只会退出窗口:
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()

关于python - 同时运行 Tkinter 窗口和 PysTray 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54835399/

相关文章:

python - 如何确定我的 ActiveState Tk/Tcl 版本是否支持 TkTreetrl 和正确的模块名称?

python - python 2.7 上的 Ttk

delphi - 如何使用 FireMonkey 创建托盘图标?

c# - 如何启动最小化到托盘的 WinForm 应用程序?

python ftp文件线程或多进程

Python:使用自动缩放功能自动添加 x-y 边距 (pyplot)

Python转义sys argv中的特殊字符

python - 使用 python 发送谷歌视频群聊通知

python - 为什么我不能从不同模块中的类中调用这个变量?

ruby - Ubuntu:如何使用 ruby​​ 应用程序添加 Systray 通知图标?