繁体   English   中英

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

[英]how to make a stopwatch/ timer on tkinter

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

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()

您可以使用类似这样的 class:

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)

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

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_time指定为时间测量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM