我正在做一个放在画布上的计时器。一切都进行得很好,直到我放置了一个while循环,这使Tkinter画布正常工作。这是我的问题的简化版本。
from tkinter import *
class Second(Frame):
def __init__(self,master):
super(Second, self).__init__(master)
self.grid()
self.TimerFrame = Frame(self)
self.create_Timer_widgets()
self.TimerFrame.grid()
def create_Timer_widgets(self):
self.canvas = Canvas(self.TimerFrame,height = 100, width = 850, bg = "light grey")
self.canvas.grid(row=0,column=0)
self.canvas.create_text(400,50,text ="X")
self.canvas.create_text(75,50,text="N)")
mins = 1
while mins > 0 :
if len(str(mins)) == 1 :
self.canvas.create_text(825,50,text = "0")
self.canvas.update()
root = Tk()
x = Second(root)
root.configure(background='light grey')
root.mainloop()
当我运行此代码时,什么都没有发生。贝壳什么也没做。删除while循环后:
mins = 1
while mins > 0 :
if len(str(mins)) == 1 :
self.canvas.create_text(825,50,text = "0")
self.canvas.update()
这是代码的一部分^^,我的代码有效。显示一切正常。我在网上找到了一些东西,但是并没有太大帮助。我还删除了“ self.TimerFrame”部分,并修复了我的代码,即使没有删除while循环,但我不能这样做,因为那样我的代码就搞砸了。 谢谢你们的帮助。
答案 0 :(得分:1)
此代码的问题是它永远不会退出while循环。如果可以-
您只需运行一次代码,然后删除实际的循环部分
,如果要退出循环时设置mins = 0
。循环永远存在,因为永远不会满足退出条件。