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

news2024/12/28 20:37:20

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

使用方法:

  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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1258707.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【密码学】【多方安全计算】不经意传输(Oblivious Transfer,OT)

文章目录 不经意传输&#xff08;oblivious transfer&#xff09;定义不经意传输的实例&#xff08;1 out 2&#xff0c;二选一不经意传输&#xff09;基于RSA的1 out 2 不经意传输疑问 不经意传输&#xff08;oblivious transfer&#xff09;定义 不经意传输&#xff08;obli…

Spring之@Autowired 属性多实现和单实现源码解析

Autowired使用过程中遇到疑问&#xff0c;通过源码解析原因 一、起因1、当person只有一个实现类时&#xff0c;TestController中&#xff0c;Person属性随意取名。2、当有Person两个实现类时&#xff0c;TestController中&#xff0c;属性名称必须和实现类名一致&#xff08;ma…

HarmonyOS 位置服务开发指南

位置服务开发概述 移动终端设备已经深入人们日常生活的方方面面&#xff0c;如查看所在城市的天气、新闻轶事、出行打车、旅行导航、运动记录。这些习以为常的活动&#xff0c;都离不开定位用户终端设备的位置。 当用户处于这些丰富的使用场景中时&#xff0c;系统的位置能力…

跨境电商崛起:揭秘全球化商机

随着科技的迅猛发展&#xff0c;跨境电商正崭露头角&#xff0c;成为商业新风口。这个数字化时代为全球商家带来了前所未有的机遇&#xff0c;同时也为消费者提供更广阔的购物选择。本文将深入探讨跨境电商的崛起&#xff0c;揭示其中隐藏的全球化商机&#xff0c;以及这一趋势…

【c++】多线程大幅缩减时间

多线程在进行复杂运算时能够大量节约时间 提醒自己能够在多线程运算的时候一定要充分利用 能够省下2/3的时间 测试代码 #include<vector> #include <iostream> #include <thread> using namespace cv; using namespace std; int result1 0 ; bool thread…

希亦和海尔内衣洗衣机哪款好用点?性价比小型洗衣机测评

在最近的这两年以来&#xff0c;专门用于清洗我们内衣裤等贴身衣物的小家电——内衣洗衣机&#xff0c;非常的火爆&#xff01;如今越来越多的人开始使用上了内衣洗衣机&#xff0c;不仅省时而且还省力。但是由于市面上内衣洗衣机产品众多&#xff0c;于是我挑选了希亦和海尔两…

overleaf上武大毕业论文开题报告本地参考文献编译报错

overleaf上武大毕业论文开题报告本地参考文献编译报错 具体报错内容 BibTeX subsystem: /tmp/biber_tmp_FDeB/b2e90af6edbf2e41914433623737dc27_16.utf8, line 4989, syntax error: found “spremont:1979”, expected “,” 解决方案 1.将参考文献编译工具设置为biber …

多段图的最短路径【java】

题目描述&#xff1a; [实验题目1] 设图G(V, E)是一个带权有向图&#xff0c;如果把顶点集合V划分成k个互不相交的子集Vi (2≤k≤n, 1≤i≤k)&#xff0c;使得E中的任何一条边(u, v)&#xff0c;必有u∈Vi&#xff0c;v∈Vim (1≤i≤k, 1&#xff1c;im≤k)&#xff0c;则称图…

接口测试工具(Jmeter)必学技巧

安装 使用JMeter的前提需要安装JDK&#xff0c;需要JDK1.7以上版本目前在用的是JMeter5.2版本&#xff0c;大家可自行下载解压使用 运行 进入解压路径如E: \apache-jmeter-5.2\bin&#xff0c;双击jmeter.bat启动运行 启动后默认为英文版本&#xff0c;可通过Options – Cho…

案例034:基于微信小程序的课堂助手系统

文末获取源码 开发语言&#xff1a;PHP 框架&#xff1a;PHP 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序运行软件&#xff1a;微信开…

SAP MPN物料简介

MPN物料-Manufacturer Part Number (MPN) 我们将把它简称为MPN物料。所谓制造商零件号&#xff0c;指的是以制造商&#xff08;注意不是供应商&#xff09;作为区分依据&#xff0c;为事实上的同一种物料定义不同的物料号。 我们在业务逻辑中&#xff0c;一物一码是基本的业务…

FLASK博客系列5——模板之从天而降

我们啰啰嗦嗦讲了4篇&#xff0c;都是在调接口&#xff0c;啥时候能看到漂亮的页面呢&#xff1f;别急&#xff0c;今天我们就来实现。 来我们先来实现一个简单的页面。不多说&#xff0c;上代码。 app.route(/) def index():user {username: clannadhh}return <html>&…

职场经验:Python自动化生成漂亮的测试报告【干货】

运用Python的Unittest、数据驱动测试&#xff08;DDT&#xff09;、Excel、Jinja2和HTML技术&#xff0c;构建一个能够自动生成精美可视化测试报告的自动化测试框架 思路流程 封装读取数据&#xff0c;让所有数据都能够再excel中填写&#xff0c;不再填写任何一行逻辑代码 通…

C++算法 —— 贪心(5)

文章目录 1、合并区间2、无重叠区间3、用最少的箭引爆气球4、整数替换5、俄罗斯套娃信封6、可被3整除的最大和7、距离相等的条形码8、重构字符串 1、合并区间 56. 合并区间 在合并区间时&#xff0c;得先排序一下&#xff0c;方便判断。方便可以按照左或者右端点排序。很多问题…

StyleGAN 使用指南:生成更逼真的图片

StyleGAN 使用指南&#xff1a;生成更逼真的图片 提出背景&#xff1a;特征纠缠StyleGAN-v1 网络结构映射网络 Mapping network f生成网络 Synthesis network g训练技巧样式混合 mixing regularization截断 Truncation Trick 评估指标路径长度 Perceptual path length解耦&…

2019年3月14日 Go生态洞察:Go开发者网络新动态

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

洗眼镜的机器有哪些?眼镜超声波清洗机哪家强?眼镜清洗机推荐

由于自己经常佩戴眼镜&#xff0c;所以个人对清洗眼镜的要求害死挺高的&#xff0c;一周最少是需要清洗一次的&#xff0c;不然会感觉眼镜上会有非常多的细菌藏匿在污垢中&#xff0c;往往这些细菌没有清洁到位就会导致脸上长痘长螨虫的问题&#xff0c;所以看到这里的朋友们一…

灵茶 - 2023 - 11 - 27

B. Minimum Ternary String 链接 : Problem - 1009B - Codeforces 思路 : 10 , 12 可以互相交换&#xff0c;就代表着1可以出现在任何地方&#xff0c;要追求字典序最小&#xff0c;那么应该将所有的1放在哪里呢 ? 应该放在第一个2前面&#xff0c;要注意的是 : 没有2的…

C++基础 -3- 匿名空间,命名空间跨文件使用

匿名空间仅限本文件使用 创建匿名空间格式(图片代码段呈现) namespace {int a100; }命名空间的跨文件使用 namespace rlxy {int a100; }namespace rlxy {extern int a; }

深度学习之循环神经网络

视频链接&#xff1a;6 循环神经网络_哔哩哔哩_bilibili 给神经网络增加记忆能力 对全连接层而言&#xff0c;输入输出的维数固定&#xff0c;因此无法处理序列信息 对卷积层而言&#xff0c;因为卷积核的参数是共享的&#xff0c;所以卷积操作与序列的长度无关。但是因为卷积…