Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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 canvas.itemconfig不能与time.sleep一起工作 def start_timer(): 对于范围内的分钟(工作时间-分钟-1,0,-1): 对于范围(59,0,-1)内的秒: 打印(分钟,秒) itemconfig(timer_text,text=(f“{mins}:{secs}”)) 时间。睡眠(1)_Python_Tkinter - Fatal编程技术网

Python canvas.itemconfig不能与time.sleep一起工作 def start_timer(): 对于范围内的分钟(工作时间-分钟-1,0,-1): 对于范围(59,0,-1)内的秒: 打印(分钟,秒) itemconfig(timer_text,text=(f“{mins}:{secs}”)) 时间。睡眠(1)

Python canvas.itemconfig不能与time.sleep一起工作 def start_timer(): 对于范围内的分钟(工作时间-分钟-1,0,-1): 对于范围(59,0,-1)内的秒: 打印(分钟,秒) itemconfig(timer_text,text=(f“{mins}:{secs}”)) 时间。睡眠(1),python,tkinter,Python,Tkinter,我通过点击按钮来调用这个函数,它应该启动一个倒计时计时器并每秒更新画布(timer=Canvas())文本。如果我注释掉time.sleep(1)命令,显示的文本在1:1结束时似乎会发生变化。但是,当time.sleep(1)命令处于活动状态时,画布文本将永远不会更新。我添加了打印(分钟,秒)以验证循环是否正确执行 问题:有人看到任何东西会阻止timer.itemconfig与time.sleep语句一起正常工作吗?这是因为time.sleep()会阻止tkinter mainloop更新小部件

我通过点击按钮来调用这个函数,它应该启动一个倒计时计时器并每秒更新画布(
timer=Canvas()
)文本。如果我注释掉
time.sleep(1)
命令,显示的文本在1:1结束时似乎会发生变化。但是,当
time.sleep(1)
命令处于活动状态时,画布文本将永远不会更新。我添加了
打印(分钟,秒)
以验证循环是否正确执行


问题:有人看到任何东西会阻止
timer.itemconfig
time.sleep
语句一起正常工作吗?

这是因为
time.sleep()
会阻止tkinter mainloop更新小部件。最好使用
after()

以下是一个例子:

将tkinter作为tk导入
最小功=1
def启动计时器(秒=工作分钟*60):
分,秒=divmod(秒,60)
timer.itemconfig(timer_text,text=f“{mins:02}:{secs:02}”)
如果秒数>0:
计时器。之后(1000,启动计时器,秒-1)
root=tk.tk()
计时器=tk.Canvas(根)
timer.pack(fill=“both”,expand=1)
计时器文本=计时器。创建计时器文本(10,10,font=“Courier 48 bold”,anchor=“nw”)
启动计时器()#启动倒计时计时器
root.mainloop()

这是否回答了您的问题?也谢谢黑雷检查。我在发帖前看到了这样的回复,并尝试了.after,得到了同样的结果。我在time.sleep语句之后添加了timer.update(),现在它可以工作了。