Python 如何在tkinter上制作秒表/计时器

Python 如何在tkinter上制作秒表/计时器,python,tkinter,Python,Tkinter,我试图制作一个秒表,它从00:00:00开始,在调用某个方法时停止。问题是,我找到的所有网站和视频都是关于在窗口中添加实时的教程,而不是实际的计时器/秒表。那些有效的我也不知道如何在我的程序中加入。请使用下面的代码作为示例来创建秒表。谢谢 from tkinter import * root = Tk() class Start: def __init__ (self, master): self.master = master #code d

我试图制作一个秒表,它从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()

您可以使用日期时间模块:

from datetime import datetime
from tkinter import *
root = Tk()

class Start:
    def __init__ (self, master):
        self.master = master
        self.start_time = None
        self.end_time = None

    def timer(self):
        self.start_time = datetime.now()

    def end(self):
        if not self.start_time:
            raise ValueError("You  should call start() function first")
        
        self.end_time = datetime.now() - self.start_time
        print(self.end_time)


root.mainloop()

我不知道执行结束后您想做什么,因此我将self.end\u time指定为测量的时间。

您可以使用类似于此类的内容:

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)

你好,马克,我能知道你为什么一遍又一遍地问这个问题吗??告诉我们这对你没有什么帮助吗?@saad我已经试过了建议问题中的代码,它是不同的。那个显示当前时间,而我想要一个计时器,秒表从00:00:00开始,而不是从当前时间开始。@MarkLin你不需要问新问题。只要做一个谷歌搜索。从中,你得到了很多结果。从那以后,你可以设置当前时间,然后计算。@saad这不是我想要的,互联网上充斥着设置当前时间的内容,而我想要的是一个计时器,一个秒表,而不是我一直找不到的当前时间,你共享的答案是当前时间,我已经尝试过了。From
datetime.now()
im假设您正在使用当前时间?我希望时间是00:00:00,所以它是一个真正的秒表,而不是时钟。我只是假设代码没有运行。