Запуск окна Tkinter и значка PysTray вместе - PullRequest
0 голосов
/ 23 февраля 2019

Я создаю проект 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()

1 Ответ

0 голосов
/ 23 февраля 2019

Наконец-то я понял это,
Теперь мне просто нужно объединить это с моим основным кодом, надеюсь, этот код поможет и другим людям ...

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()
...