1 回答

TA貢獻1848條經(jīng)驗 獲得超6個贊
...
start = time.time()
if clicks == 100:
print("test")
end = time.time()
print(start - end)
start每次單擊后您都會重新啟動。一種可能的解決方案是僅在第一次單擊后啟動它。這也需要start是一個全局變量。
還要注意你應(yīng)該做的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)
然而,使用全局變量是一種代碼味道和反模式,我們在這么小的程序中已經(jīng)有 2 個了。
您可以嘗試將它們包裝在數(shù)據(jù)結(jié)構(gòu)中,例如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()
另一個適合現(xiàn)實世界的解決方案是將整個 tkinter 應(yīng)用程序包裝在一個類中,該類可以跟蹤其自身狀態(tài)。
添加回答
舉報