1 回答
TA贡献1848条经验 获得超6个赞
...
start = time.time()
if clicks == 100:
print("test")
end = time.time()
print(start - end)
start每次单击后您都会重新启动。一种可能的解决方案是仅在第一次单击后启动它。这也需要start是一个全局变量。
还要注意你应该做的end - start,不是start - end。
clicks = 0
start = None
...
global clicks
global start
...
if clicks == 1:
# instantiating 'start' only if it was the first click
start = time.time()
elif clicks == 100:
print("test")
end = time.time()
print(end - start)
然而,使用全局变量是一种代码味道和反模式,我们在这么小的程序中已经有 2 个了。
您可以尝试将它们包装在数据结构中,例如dict:
import tkinter
import time
counter = tkinter.Tk()
data = {'clicks': 0, 'start': None}
def addClick():
data['clicks'] += 1
lbl.configure(text=data['clicks'])
if data['clicks'] == 1:
# instantiating 'start' only if it was the first click
data['start'] = time.time()
elif data['clicks'] == 100:
print("test")
end = time.time()
print(end - data['start'])
lbl = tkinter.Label(counter, text=data['clicks'])
lbl.pack()
btn = tkinter.Button(counter, text="Click here", command=addClick)
btn.pack()
counter.mainloop()
另一个适合现实世界的解决方案是将整个 tkinter 应用程序包装在一个类中,该类可以跟踪其自身状态。
添加回答
举报