В то время как цикл заставляет Tkinter canvas не работать - PullRequest
0 голосов
/ 26 октября 2018

Я делал таймер, который помещался на холст.Все шло хорошо, пока я не поместил цикл 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 голосов
/ 26 октября 2018

Проблема этого кода в том, что он никогда не выходит из цикла while.Было бы лучше, если бы -

  1. вы просто запустили код один раз и удалили реальную часть цикла,

  2. , если вы установите mins = 0когда вы хотели выйти из цикла.Цикл продолжается вечно, потому что условие выхода никогда не выполняется.

...