【发布时间】:2017-10-22 09:03:10
【问题描述】:
我正在尝试使用 Tkinter 构建一个小型 Python GUI 应用程序。打开应用程序时会打开一个主窗口。然后可以单击一个按钮来打开一个新的顶层。在此顶层中,有一个计时器(倒计时),在按下按钮时启动。
我的问题是顶层在计时器倒计时时冻结。我可能错过了一些关于 Tkinter 如何工作(以及如何构建代码)的基本知识。我希望您能澄清为什么代码没有按预期工作。
from tkinter import *
class Application:def __init__(self, master=NONE):
self.root = Tk()
btnTimer = Button(self.root, text="Open timer", command=self.open_timer)
btnTimer.grid(row=1, column=0)
self.root.mainloop()
def open_timer(self):
# Hide main window
self.root.withdraw() # Hide main window
# Make window for controls
self.wdowControl = Toplevel(self.root)
# Timer
self.wdowControl.timerText = Label(self.wdowControl, text="00:00:00", font=("Helvetica", 80))
self.wdowControl.timerText.grid(row=0, column=0)
btnStart = Button(self.wdowControl, text="Start timer", command=self.start_timer)
btnStart.grid(row=1, column=0)
def start_timer(self):
self.update_timer(5) # Timer in seconds
def update_timer(self, t):
if t > 0:
m, s = divmod(t, 60)
h, m = divmod(m, 60)
timeLeft = "%d:%02d:%02d" % (h, m, s)
self.wdowControl.timerText.configure(text=timeLeft)
t -= 1
self.wdowControl.after(1000, self.update_timer(t))
else:
self.wdowControl.timerText.configure(text="00:00:00", fg='red')
app = Application())
注意: 我昨天开始使用 Python 进行编码,但我可能还没有开始学习应该首先学习的基本知识。但是,嘿,这就是让我开心的地方。 :)
【问题讨论】:
标签: python python-3.x tkinter