Tkinter - 在没有tkinter响应的情况下执行代码

时间:2016-11-08 11:02:10

标签: python tkinter

在尝试创建倒数计时器时,我遇到了一个问题。我的基础是Bryan Oakleys代码(Making a countdown timer with Python and Tkinter?)我没有发布整个代码,因为这会很长。

我希望我的代码能做什么:

等待x秒,存储在等待并由条目WaitE收集。 接下来,我希望wait_button调用Countdown调用。该类将在其自己的tkinter窗口中创建一个标签。倒计时(= x秒延迟)后,将调用main函数并更改流程。

它的作用:

执行代码时没有错误。倒计时发生,流量发生变化,但没有第二次延迟,也没有打开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)) 

1 个答案:

答案 0 :(得分:0)

由TigerhawkT3解决。

&#34;尝试用self.label.after(1000,lambda:self.counting(self.Flow))&#34;

替换后面的行。