python - 如何在 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()
解决方案
您可以使用此类:
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)
推荐阅读
- java - 如何从 selenium java 中的 multi_select 中的列表中选择一个项目
- android - Android kotlin mockMaker 问题
- amazon-web-services - 验证通过 Storage Gateway 上传到 S3 的文件
- php - 检查数组中的值是否在其他数组中
- c# - 如何将键和值与字典对象分开
- c#-4.0 - 使用 Assembly.LoadFrom 方法时将 2 个程序集作为相同的路径。为什么?
- react-native - 用于 create-react-native-app 的捆绑分析器
- c++ - 显式调用平凡的默认构造函数会导致额外的赋值调用
- java - java 8 java.lang.OutOfMemoryError:元空间
- linux - Kubernetes:Linux用户管理