【发布时间】:2016-09-25 17:52:11
【问题描述】:
好吧,我在 python 方面有点新手,我越来越难以在 Tkinter 中创建一个线程,正如你们都知道的那样,在 Tkinter 中使用 while 会使其无响应并且脚本仍在运行。
def scheduler():
def wait():
schedule.run_pending()
time.sleep(1)
return
Hours = ScheduleTest()
if len(Hours) == 0:
print("You need to write Hours, Example: 13:30,20:07")
if len(Hours) > 0:
print("Scheduled: ", str(Hours))
if len(Hours) == 1:
schedule.every().day.at(Hours[0]).do(Jumper)
print("Will jump 1 time")
elif len(Hours) == 2:
schedule.every().day.at(Hours[0]).do(Jumper)
schedule.every().day.at(Hours[1]).do(Jumper)
print("Will jump 2 times")
elif len(Hours) == 3:
schedule.every().day.at(Hours[0]).do(Jumper)
schedule.every().day.at(Hours[1]).do(Jumper)
schedule.every().day.at(Hours[2]).do(Jumper)
print("Will jump 3 times")
while True:
t = threading.Thread(target=wait)
t.start()
return
scheduler()
我试图做这样的事情,但它仍然让 tkinter 没有响应 提前致谢。
【问题讨论】:
-
只需使用 after() stackoverflow.com/a/39632315/1391444 一个或多个循环同样有效。
-
你的意思是在睡眠后使用?像 root.after(10000) 而不是时间,睡觉?我试过这样做,但它没有用,要么我不明白该放在哪里,要么它对我不起作用
-
我必须跑,但如果你不跑,我会回来的。
-
@JacobVlijm 我没搞定,你还能帮我吗?
-
好的,我会在几个小时内发布答案。
标签: python multithreading tkinter python-multithreading schedule