Я пытаюсь создать простое приложение на Python, которое добавит иконку в трее.
Я также добавляю 2 элемента меню к этому значку на панели задач, один для отображения всплывающего сообщения Windows 10, а другой для остановки приложения.
Программа запускается правильно, появляется значок, также появляется меню.
Итак, процесс, который я запустил с self.icon.run()
, должен ждать, пока я не буду называть self.icon.stop()
Проблема в том, что, когда я нажимаю первый пункт меню («Уведомление о тестировании») - уведомление о тосте отображается правильно, но ПОСЛЕ того, как этот процесс выходит из цикла self.icon.run()
, и программа завершает себя.
И я не понимаю, почему это так. Согласно документации self.icon.run()
следует ждать до вызова stop ().
Я что-то не так делаю? Вот мой код:
from win10toast import ToastNotifier
from pystray import *
from PIL import Image
class SysTrayUI:
def __init__(self):
self.icon_path = "icon.png"
self.menu_items = [
MenuItem("Test Notification", lambda: toaster.show_toast("Test")),
MenuItem("Exit", lambda: self.icon.stop()),
]
self.menu = Menu(*self.menu_items)
self.icon = Icon("Test Name", menu=self.menu)
self.icon.icon = Image.open(self.icon_path)
self.icon.run()
toaster = ToastNotifier()
app = SysTrayUI()