我试图在后台执行一个名为“警报”的函数,而调用“时钟”的函数正在运行。这是我的报警功能。由于内部代码很复杂,我只是举一个例子。
def Alarm():
while True:
current_time = dt.datetime.now().time()
if timetable[0] == current_time:
print("Its time")
break
clock()
Alarm()
root.mainloop()函数没有在后台执行,但它首先执行,然后启动GUI。
发布于 2020-07-10 10:06:24
你需要threading
import threading
# Your Alarm definition
alarm_thread = threading.Thread(target=Alarm)
main_thread = threading.Thread(target=root.mainloop)
alarm_thread.start()
main_thread.start()这些函数现在将同时运行,但请注意,管理这两者之间的交互是很棘手的。我不知道clock函数是如何定义的,也不知道如何运行它,但是您可以很容易地修改代码,使其同时运行。
发布于 2020-07-10 10:25:54
您可以使用after()替换while循环:
def alarm():
current_time = dt.datetime.now().time()
if current_time >= timetable[0]:
print("It's time")
else:
# check again 1 second later
root.after(1000, alarm)
clock()
alarm()
root.mainloop()https://stackoverflow.com/questions/62831906
复制相似问题