📜  如何在python中制作秒表(1)

📅  最后修改于: 2023-12-03 15:08:56.780000             🧑  作者: Mango

如何在Python中制作秒表

在本文中,我们将介绍如何在Python中制作一个秒表。秒表是一个常见的计时器,常用于计算体育比赛和其他计时活动的时间。

用到的库

在本项目中,我们用到了两个库:

  • time:time库提供了各种时间相关的函数,包括获取当前时间、设置时间等等。
  • tkinter:tkinter库是Python的标准GUI库,用于创建GUI应用程序。
代码

下面是所需的Python代码:

import time
import tkinter as tk

class StopWatch(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        
        self.ms = 0
        self.sec = 0
        self.min = 0
        
        self.running = False
        
        self.create_widgets()
        self.pack()
        
    def create_widgets(self):
        self.time_label = tk.Label(self, text="00:00.000", font=("Helvetica", 24))
        self.start_button = tk.Button(self, text="Start", command=self.start_watch)
        self.stop_button = tk.Button(self, text="Stop", command=self.stop_watch)
        self.reset_button = tk.Button(self, text="Reset", command=self.reset_watch)
        
        self.time_label.pack(side="top", fill="x", padx=5, pady=5)
        self.start_button.pack(side="left", padx=5, pady=5)
        self.stop_button.pack(side="left", padx=5, pady=5)
        self.reset_button.pack(side="left", padx=5, pady=5)
        
    def start_watch(self):
        self.running = True
        self.watch()
        
    def stop_watch(self):
        self.running = False
        
    def reset_watch(self):
        self.running = False
        self.ms = 0
        self.sec = 0
        self.min = 0
        self.update_time()
        
    def watch(self):
        if self.running:
            self.ms += 1
            if self.ms >= 1000:
                self.sec += 1
                self.ms = 0
            if self.sec >= 60:
                self.min += 1
                self.sec = 0
            self.update_time()
            self.after(1, self.watch)
        
    def update_time(self):
        self.time_label.config(text=f"{self.format_time(self.min)}:{self.format_time(self.sec)}.{self.format_time(self.ms)}")

    @staticmethod
    def format_time(time_val):
        return f"{time_val:02d}"

root = tk.Tk()
root.title("Stop Watch")
sw = StopWatch(master=root)
sw.mainloop()
代码解析

代码中使用面向对象编程来制作一个秒表,其继承了tk.Frame来创建GUI,并且有start_watch()stop_watch()reset_watch()watch()等方法来控制秒表。在create_widgets()中,我们创建了一个tk.Label用于显示时间,使用三个tk.Button来启动、停止和重置秒表。

start_watch()中,我们将self.running的值设置为True,并且启动计时器。watch()方法用来更新时间。stop_watch()reset_watch()方法分别用来停止和重置秒表的值和时间标签。format_time()方法则将给定的一个时间格式化成字符串。

运行效果

运行代码后,可以看到一个秒表窗口。你可以点击“Start”按钮开始计时,用“Stop”按钮停止计时,或者用“Reset”按钮重置计时值和时间标签。

stopwatch-demo

总结

这就是制作一个秒表的所有代码,你可以将此代码用作Python学习的参考。如果你想自己动手制作一个秒表,你可以尝试添加其他功能,如计圈、计时器音效等。Happy coding!