我的目标是创建一个简单的计时器程序。它会不断更新,直到按下 stopButton 。但是,我不确定如何停止勾选功能,以便在按下 stopButton 后计时器保持不变。
到目前为止,这是我的代码:
import tkinter
root = tkinter.Tk()
root.title('Timer')
root.state('zoomed')
sec = 0
def tick():
global sec
sec += 0.1
sec = round(sec,1)
timeLabel.configure(text=sec)
root.after(100, tick)
def stop():
# stop the timer from updating.
timeLabel = tkinter.Label(root, fg='green',font=('Helvetica',150))
timeLabel.pack()
startButton = tkinter.Button(root, text='Start', command=tick)
startButton.pack()
stopButton = tkinter.Button(root, text='Stop', command=stop)
stopButton.pack()
root.mainloop()
什么是阻止tick()
功能的可能方法?
非常感谢任何帮助!
答案 0 :(得分:3)
您可以使用另一个全局来跟踪您当前是否应该计算滴答数。如果你不应该计算滴答声,只需要tick
什么都不做(而不是再次注册)。
import tkinter
root = tkinter.Tk()
root.title('Timer')
root.state('zoomed')
sec = 0
doTick = True
def tick():
global sec
if not doTick:
return
sec += 0.1
sec = round(sec,1)
timeLabel.configure(text=sec)
root.after(100, tick)
def stop():
global doTick
doTick = False
def start():
global doTick
doTick = True
# Perhaps reset `sec` too?
tick()
timeLabel = tkinter.Label(root, fg='green',font=('Helvetica',150))
timeLabel.pack()
startButton = tkinter.Button(root, text='Start', command=start)
startButton.pack()
stopButton = tkinter.Button(root, text='Stop', command=stop)
stopButton.pack()
root.mainloop()
还可以进行其他结构改进(使用类来摆脱全局变量)和样式改进(snake_case
而不是camelCase
),但这应该让你指向右边方向...