Python:通过systray重新加载脚本

时间:2019-08-02 16:40:00

标签: python exit python-os systray

我将此https://github.com/Infinidat/infi.systray用于运行为systray的小型python应用程序。在右键单击菜单中,我希望能够重新加载脚本。

我的函数private List<MyUserControl> userControls = new List<MyUserControl>(); private void AddUCsToList(int howMany) { for (int i = 0; i < howMany; i++) { flowLayoutPanel1.Controls.Add(new MyUserControl()); } } 有2个问题:
-systray.shutdown()创建错误reload(有时此错误不断陷入无休止的循环,因此我的脚本被完全冻结了) -并且RuntimeError: cannot join current thread不会终止脚本。我还尝试了sys.exit()exit()

os._exit(1)

完整错误:

from infi.systray import SysTrayIcon
from time import sleep
import sys
import os
import requests


def get_data(systray):
    print("Data ready")

# quit the script when click on "Quit" in systray menu 
def on_quit_callback(systray):
    systray.shutdown()
    sys.exit()


def reload(systray):
    os.startfile("myscript.py")
    systray.shutdown()
    sleep(3)
    sys.exit()


def mysystray():
    menu_options = (("Get Data", None, get_data), ("Reload", None, reload))
    systray = SysTrayIcon("ico.ico", "My systray", menu_options)
    systray.start()

    # preview of real script
    while True:
        response = requests.get("https://www.google.com/")
        sleep(10)


mysystray()

0 个答案:

没有答案