Python tkinter GUI持续检查系统时间和调用功能
我的GUI应用程序是用Python 2.7开发的。应用程序将从用户处获取开始时间、结束时间和时间间隔。我有代码将获取此输入并根据时间间隔创建一个时间数组。 我试图在这里实现一个函数,该函数将在存储在数组中的时间被调用,如果用户按下停止按钮,该函数也可以停止Python tkinter GUI持续检查系统时间和调用功能,python,tkinter,while-loop,Python,Tkinter,While Loop,我的GUI应用程序是用Python 2.7开发的。应用程序将从用户处获取开始时间、结束时间和时间间隔。我有代码将获取此输入并根据时间间隔创建一个时间数组。 我试图在这里实现一个函数,该函数将在存储在数组中的时间被调用,如果用户按下停止按钮,该函数也可以停止 time_slots = [dt.strftime('%H:%M:%S') for dt in datetime_range(start_time, end_time,timedelta(minutes=interval))
time_slots = [dt.strftime('%H:%M:%S') for dt in
datetime_range(start_time,
end_time,timedelta(minutes=interval))]
time_slots_array = np.array(time_slots)
def function1():
print("In function 1")
def start():
global start_time,end_time,time_slots
now_time = datetime.now().time()
t.sleep(1)
keys = sorted(time_slots_arrary
if now_time >= start_time.time() and now_time <= end_time.time():
if now.strftime("%H:%M:%S") in keys:
function1()
job1 = root.after(1000, start())
else:
root.after_cancel(job1)
start_button = tk.Button(prod_frame, text='Start Program ', width=25, background='green', foreground='black',command = start)
stop_button = tk.Button(prod_frame, text='Stop Program ', width=25, background='orange', foreground='black',command = stop)`
time\u slots=[dt.strftime(“%H:%M:%S”)用于中的dt
日期时间范围(开始时间),
结束时间,时间增量(分钟=间隔))]
时隙数组=np.数组(时隙)
def function1():
打印(“在功能1中”)
def start():
全局开始时间、结束时间、时隙
now_time=datetime.now().time()
t、 睡眠(1)
键=已排序(时隙数组)
如果now_time>=start_time.time()和now_time在
之后调用,则不正确。它需要一个可调用的函数引用
考虑这一行代码:
job1 = root.after(1000, start())
上述代码的功能与此相同:
result = start()
job1 = root.after(1000, result)
由于start()
返回None
,因此与此相同:
start()
job1 = root.after(1000, None)
在
之后调用的正确方法是为其提供对函数的引用:
job1 = root.after(1000, start)
查看Tk.after
和Tk.after\u cancel
方法。这个网站上有很多关于在tkinter中创建计时器的问题和答案。在提问之前你做过任何研究吗?@BryanOakley是的,我已经研究并尝试了列出的解决方案,但应用程序正在崩溃。如果它正在崩溃,则会显示错误消息s告诉您一些有用的信息。如果您在显示错误消息的同时显示您尝试的内容,我们可能会提供帮助。@BryanOakley我已经包括了tk.after和tk.after\u cancel。应用程序最初也可以工作。当我按下启动按钮(本应调用启动功能)时,它会冻结并崩溃。它运行正常