カウントダウンタイマーの作成中に問題が発生しました。私はBryan Oakleysのコード(Making a countdown timer with Python and Tkinter?)に基づいています。かなり長いので、コード全体を投稿しませんでした。私は自分のコードが何をしたいのかTkinter - tkinterが反応せずにコードが実行される
:秒のx量のため
待ち、待ちに格納されたエントリウェイトによって収集。 次に、wait_buttonがCountdown呼び出しを呼び出すようにします。このクラスは、独自のtkinterウィンドウにラベルを作成します。カウントダウン(= x秒の遅延)後、主機能が呼び出され、フローが変更されます。
コードがエラーなしで実行されます。それは何
。カウントダウンが行われ、フローは変更されますが、2回目の遅延はなく、tkinterウィンドウは開かれません。
私はサイトを見ても、私の問題を解決するのに本当に役立つものは見つかりませんでした。
Stijn
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))
は 'self.label.afterでafter''でラインを交換してみてください(1000、ラムダ:self.counting(self.Flow)) '。 – TigerhawkT3
完璧!できます。この場合のラムダの重要性を説明できますか? –
@ TigerhawkT3: 'lambda'と' after'を使う必要はありません。引数を渡すことができます: 'self.label.after(1000、self.counting、self.Flow)' –