我正在制作秒表计划。如果计时器已经运行,我无法启动按钮。
当我搜索时,我看到相同的14 year old code。我发现很难相信过去14年来所有这些人都独立地达成了同样的解决方案。
作为初学者,我真的很想知道我写的是什么,而不是复制/粘贴和继续。
from tkinter import *
import time
import datetime
class Window(Frame):
def __init__(self, master = None):
Frame.__init__(self, master)
self.master = master
self.init_window()
def init_window(self):
self.master.title('Stopwatch')
self.pack(fill=BOTH, expand=1)
quit_button = Button(self, text = 'Quit', command = self.client_exit)
quit_button.config(width = 9)
quit_button.place(x=230)
start_button = Button(self, text = 'Start', command = self.timer_start)
start_button.config(width= 10)
start_button.place(x=0, y=0)
stop_button = Button(self, text = 'Stop', command = self.timer_stop)
stop_button.config(width = 10)
stop_button.place(x=80)
reset_button = Button(self, text = 'Reset', command = self.timer_reset)
reset_button.config(width = 10)
reset_button.place(x=160)
self.is_timer_running = False
def client_exit(self):
exit()
def timer_start(self):
global sec1
sec1 = time.time()
if self.is_timer_running == False:
self.is_timer_running = True
def tick():
if self.is_timer_running == True:
sec = time.time()
sec = datetime.timedelta(seconds = sec - sec1)
clock['text'] = sec
clock.after(100, tick)
tick()
def timer_stop(self):
stop_time = time.time()
if self.is_timer_running == True:
self.is_timer_running = False
def tick_stop():
stop = datetime.timedelta(seconds = stop_time - sec1)
clock['text'] = stop
tick_stop()
def timer_reset(self):
self.is_timer_running = False
clock['text'] = '00:00:00'
答案 0 :(得分:4)
单击按钮后立即将按钮状态设置为禁用(确保更新),然后在计时器停止运行时将其设置恢复正常。
start_button.config(state = 'disabled')
start_button.update()
# do whatever you need to do i.e run the stop watch
start_button.update()
start_button.config(state = 'normal')
感谢@NickBonne进一步澄清:)
您需要在
self.start_button = start_button
中添加self.stop_button = stop_button
和init_window()
。然后,您可以使用self.start_button.config(state="disabled")