时间函数总是给我 0.0 输出

我试图制作一个 CPS 计数器,当我达到 100 次点击时,它应该打印“测试”并打印达到 100 次点击所花费的时间。但它总是给出 0.0 作为时间输出。


import tkinter

import time


counter = tkinter.Tk()


clicks = 0


def addClick():

    global clicks

    clicks = clicks + 1

    lbl.configure(text=clicks)


    start = time.time()

    if clicks == 100:

        print("test")

        end = time.time()

        print(start - end)


lbl = tkinter.Label(counter, text = clicks)

lbl.pack()


btn = tkinter.Button(counter, text="Click here", command=addClick)

btn.pack()



counter.mainloop()


达令说
浏览 84回答 1
1回答

慕勒3428872

... start = time.time()if clicks == 100:    print("test")    end = time.time()    print(start - end)start每次单击后您都会重新启动。一种可能的解决方案是仅在第一次单击后启动它。这也需要start是一个全局变量。还要注意你应该做的end - start,不是start - end。clicks = 0start = None...global clicksglobal 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 tkinterimport timecounter = 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 应用程序包装在一个类中,该类可以跟踪其自身状态。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python