首页 > 解决方案 > 如何在 tkinter 上制作秒表/计时器

问题描述

我正在尝试制作一个秒表,它从 00:00:00 开始,并在调用某个方法时停止。问题是我发现的所有网站和视频都是在窗口中添加实时时间的教程,而不是实际的计时器/秒表。那些有效的我也不知道如何放入我的程序中。请使用以下代码作为示例来创建秒表。谢谢。

from tkinter import *
root = Tk()

class Start:
    def __init__ (self, master):
        self.master = master
        #code

    def timer(self):
        #start timer
    
    def end(self):
        #end timer

root.mainloop()

标签: pythontkinter

解决方案


您可以使用此类:

import time

class StopWatch(object):

    def __init__(self):
        self.start_time = None
        self.stop_time = None

    def start(self):
        self.start_time = time.time()

    def stop(self):
        assert self.start_time
        self.stop_time = time.time()

    @property
    def time_elapsed(self):
        assert not self.stop_time, \
            "Can't check `time_elapsed` on an ended `Stopwatch`."

        if not self.start_time:
            #timer was not started.
            return 0
        
        return time.time() - self.start_time

    @property
    def total_run_time(self):
        assert self.start_time and self.stop_time
        return self.stop_time - self.start_time

    def __enter__(self):
        self.start()
        return self

    def __exit__(self, type, value, traceback):
        self.stop()
        if type:
            raise type

然后你可以像这样使用它:

m_sw = StopWatch()
    
m_sw.start()
print (m_sw.time_elapsed)
time.sleep(1)
print (m_sw.time_elapsed)

time.sleep(1)
m_sw.stop()
print(m_sw.total_run_time)

推荐阅读