我将此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()