我在Python 2.7中开发了我的GUI应用程序。应用程序将从用户获取开始时间,结束时间和时间间隔。我有代码将接受此输入并根据间隔创建时间数组。 我试图在这里实现一个函数,它将在存储在数组中的时间被调用,如果用户按下停止按钮也可以停止。
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)`
答案 0 :(得分:1)
您正在调用after
错误。它需要可调用 - 对函数的引用。
考虑这行代码:
job1 = root.after(1000, start())
以上代码的功能与此相同:
result = start()
job1 = root.after(1000, result)
由于start()
返回None
,所以它与此相同:
start()
job1 = root.after(1000, None)
调用after
的正确方法是向函数提供引用:
job1 = root.after(1000, start)