Tkinter: root.after (), root.after_cancel ()

1

У меня есть этот секундомер, который я пытаюсь сбросить после того, как счет достигнет 0. Однако у меня возникли проблемы с использованием функции "after_cancel". Может ли кто-нибудь помочь?
Случается, что он продолжается бесконечно, и я хочу убить функцию "после".

def countdown(self):
    if self.totalseconds == 1:
        self.master.after_cancel(self.after_id)
    self.totalseconds = self.totalseconds - 1
    stdtime = self.total_seconds_to_standard(self.totalseconds)
    self.time.set(stdtime)
    self.after_id = self.master.after(1000,self.countdown)
Теги:
user-interface
tkinter
tcl
tk

1 ответ

-2

Выяснил это... foobar.

def countdown(self):
    self.totalseconds = self.totalseconds - 1
    stdtime = self.total_seconds_to_standard(self.totalseconds)
    self.time.set(stdtime)
    self.after_id = self.master.after(1000,self.countdown)
    if self.totalseconds == 0:
        self.master.after_cancel(self.after_id)
  • 2
    Вам действительно не нужен .after_cancel() здесь - вы могли бы так же легко пропустить .after() при окончательном подсчете, чтобы не было ничего, что нужно отменить.
  • 0
    Неверно, иначе tk продолжает вызывать функцию обратного вызова, указанную в .after ()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню