при попытке создать таймер обратного отсчета, у меня возникла проблема. Я основывался на коде Bryan Oakleys (Making a countdown timer with Python and Tkinter?). Я не опубликовал весь код, потому что это было бы довольно долго.Tkinter - код выполняется без ответа tkinter
То, что я хочу, чтобы мой код, чтобы сделать:
Подождите й количество секунд, хранящийся в Wait и собранная записью Уэйта. Далее, я хочу, чтобы wait_button вызывал обратный отсчет. Этот класс создаст метку в своем собственном окне tkinter. После обратного отсчета (= задержка в течение шести секунд) основная функция будет вызвана и изменит поток.
Что он делает:
код выполняется без ошибок. Обратный отсчет имеет место, и потоки изменены, но без второй задержки и без открытия окна tkinter.
Любая помощь была бы оценена, я посмотрел на сайт, но не нашел ничего, что действительно помогло бы решить мою проблему.
Стейн
def Wait_button(self):
"""This is part of a larger tkinter grid and is called after pushing a button"""
"""Wait for a set ammount of time before changing"""
self.Flow = self.Collect()
self.WaitE = int(self.WaitE.get())
Countdown(self.Flow, self.WaitE)
return()
class Countdown():
def __init__(self, Flow, WaitE):
self.master = Tk()
self.label = Label(self.master, text="", width=10)
self.label.pack()
self.remaining = WaitE
self.Flow = Flow
self.counting(Flow, self.remaining)
def counting(self, Flow, remaining = None):
print(Flow, "after init")
if remaining is not None:
self.remaining = remaining
if int(self.remaining) <= 0:
self.master.destroy()
Go = AskInput(root)
Go.Change_now(Flow)
else:
print(self.remaining, "-1")
self.label.configure(text="%d" % self.remaining)
self.remaining = self.remaining - 1
self.label.after(1000, self.counting(self.Flow))
Попробуйте заменить строку с '' after' с self.label.after (1000, lambda: self.counting (self.Flow)) '. – TigerhawkT3
Отлично! Оно работает. Можете ли вы объяснить важность лампы в этом случае? –
@ TigerhawkT3: вам не нужно использовать 'lambda' с' after': вы можете передать аргументы: 'self.label.after (1000, self.counting, self.Flow)' –