Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tkinter GUI持续检查系统时间和调用功能_Python_Tkinter_While Loop - Fatal编程技术网

Python tkinter GUI持续检查系统时间和调用功能

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))

我的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_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。应用程序最初也可以工作。当我按下启动按钮(本应调用启动功能)时,它会冻结并崩溃。它运行正常