【Python】巧用tkinter设计秒表计时器

秒表计时器是一种用于计算时间间隔的计时器。它通常由一个开始按钮、一个停止按钮和一个重置按钮组成。

使用方法:

  1. 单击“开始”按钮开始计时。
  2. 单击“停止”按钮停止计时。
  3. 单击“重置”按钮将计时器归零。

注意事项:

  1. 没有对计时器误差进行校准,所以无法避免毫秒误差
  2. 暂无秒表计次、时钟等功能

运行结果

代码示例

"""
    秒表计时器
"""

# 通配符 '*'
__all__ = ['main']

import tkinter as tk
from tkinter import ttk
import time
import timeit


class Timer(tk.Tk):
    """继承tk.Tk()类,创建一个计时器类"""

    def __init__(self):
        """构造方法"""

        # 调用tk.Tk()类的构造方法
        super().__init__()

        self.title('秒表计时器')     # 标题
        self.geometry('300x200+400+200')

        # 标签
        self.timeVar = tk.StringVar(value='00 : 00 : 00')
        self.showLabel = tk.Label(self, textvariable=self.timeVar)
        self.showLabel.pack()

        # 框架
        buttonFrame = tk.Frame(self)
        buttonFrame.pack()
        # 按键
        startButton = ttk.Button(buttonFrame, text='开始', width=5, command=self.startTime)
        startButton.pack(side=tk.LEFT)
        stopButton = ttk.Button(buttonFrame, text='停止', width=5, command=self.stopTime)
        stopButton.pack(side=tk.LEFT)
        resetButton = ttk.Button(buttonFrame, text='重置', width=5, command=self.resetTime)
        resetButton.pack(side=tk.LEFT)
        closeButton = ttk.Button(buttonFrame, text='退出', width=5, command=self.destroy)
        closeButton.pack(side=tk.LEFT)


    # 重置计时
    def resetTime(self):
        print('重置计时')
        self.stopFlag = 1                   # 停止计时旗帜
        self.timeVar.set('00 : 00 : 00')    # 计时初始化
        self.startTime()                    # 重新计时


    # 停止计时
    def stopTime(self):
        self.stopFlag = 1       # 停止计时旗帜
        print('停止计时')


    # 开始计时
    def startTime(self, event=None):
        print('开始计时')
        self.stopFlag = 0       # 停止计时旗帜

        # 分割时分秒
        min, sec, msec = map(int, self.timeVar.get().split(':'))
        print(min, sec, msec)

        while True:
            # 秒钟
            while sec < 60:
                # 毫秒钟
                while msec < 100:
                    self.timeVar.set('{:0>2d} : {:0>2d} : {:0>2d}' .format(min, sec, msec))
                    self.update()   # 刷新窗口

                    # 延时
                    for delay in range(540000): pass

                    # 结束计时
                    if self.stopFlag:
                        return

                    msec += 1   # 毫秒钟计时
                sec += 1        # 秒钟计时
                msec = 0        # 毫秒初始化
            min += 1            # 分钟计时
            sec = 0             # 秒钟初始化
            msec = 0            # 毫秒初始化


# 主函数
def main():
    pass

# 代码测试
if __name__ == '__main__':
    ui = Timer()
    ui.mainloop()
else:
    print(f'导入{__name__}模块')

作者:周华

创作日期:2023/11/27

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值