Как добавить systemtray в скрипт Python? - PullRequest
1 голос
/ 13 марта 2019

Я хочу добавить системный трей в существующий проект на основе Python: https://github.com/piejanssens/premiumizer

Как именно мне это нужно сделать?Я совершенно новичок в Python и использую его впервые, просто потому, что хочу добавить небольшую функцию к существующему сценарию.

Чего я хочу добиться, так это того, чтобы при запуске сценарияДолжен быть значок в системном трее, который открывается http://localhost:5000, если дважды щелкнуть по нему.И если щелкнуть по нему правой кнопкой мыши, должна быть опция Exit / Quit.

Я провел небольшое исследование и думаю, что смог бы добиться этого с помощью одного из этих двух сценариев https://github.com/moses-palmer/pystray или https://github.com/Infinidat/infi.systray (я также читал, что infi.systray следует использовать, потому что он не зависит от pywin32, потому что он использует библиотеку ctypes, потому что она является частью стандартной библиотеки Python).

Поэтому я попытался добавитьэтот код для тестирования в файле premiumizer.py:

from infi.systray import SysTrayIcon
    def say_hello(systray):
        print "Hello, World!"
    menu_options = (("Say Hello", None, say_hello),)
    systray = SysTrayIcon("icon.ico", "Example tray icon", menu_options)
    systray.start()

Но теперь консоль немедленно закрывается.Как я могу проверить, что пошло не так?Сохраняется ли где-нибудь журнал ошибок?

Что мне нужно сделать, чтобы он работал?Или есть более простой способ для такого "глупца", как я?

1 Ответ

1 голос
/ 13 марта 2019

Добро пожаловать в мир python!

Позвольте мне предположить, что вы скопировали скрипт, который вы разместили, в файл python и просто запустили файл, правильно?Если это так, проблема заключается в том, что после выполнения скрипта программа завершает работу и вместе с ней появляется значок в трее.

Запустите интерактивную консоль, запустив python или (ipython, если он установлен) в окне командной строки и вставьтев вашем коде.Вы увидите, что значок в трее появляется и остается.Он исчезает, когда вы закрываете консоль.(Примечание: приведенный выше код использует версию Python 2.x print без () и приведет к ошибке в Python 3.x, здесь используйте print("Hello, World!").)

Чтобы это работаловам нужно поместить этот код где-то в части настройки / инициализации премиализатора.Не зная этого проекта, я не могу помочь, где именно.

...