While循环导致Tkinter画布无法工作

时间:2018-10-25 21:29:48

标签: python python-3.x tkinter tkinter-canvas

我正在做一个放在画布上的计时器。一切都进行得很好,直到我放置了一个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循环,但我不能这样做,因为那样我的代码就搞砸了。 谢谢你们的帮助。

1 个答案:

答案 0 :(得分:1)

此代码的问题是它永远不会退出while循环。如果可以-

  1. 您只需运行一次代码,然后删除实际的循环部分

  2. ,如果要退出循环时设置mins = 0。循环永远存在,因为永远不会满足退出条件。