Python 内置模块tkinter —— 秒表计时器

article/2025/10/30 7:11:00
# 秒表计时器"""
思考:1、怎么创建一个最简单的窗口?2、怎么保持窗口一直运行?3、不用方法mainloop()怎么实现窗口一直运行?4、请问窗口的宽度*高度默认值为多少个像素点?5、利用方法geometry()设置窗口大小为100*100,能否实现?6、同为关闭方法,quit()与destroy()有什么区别?介绍:在我们学生时代除了对体育老师身体健康感到担忧外,最怕800米/1000米体能测试,仿佛被恐惧支配身体所以我们对体育老师的刻板印象是:ta总是拿着秒表计时器和口哨,随时都有可能来一个体能测试,呜呜!秒表计时器,顾名思义,就是可以用来计时的,最小单位是10毫秒,它的换算方法是:1小时=60分钟,1分钟=60秒,1秒=1000毫秒,1毫秒=1000微妙,1微妙=1000纳秒...我把生活中常见的秒表计时器和时钟结合起来,做一个与手机阉割版闹钟APP相似的秒表计时器。知识点:1、计算窗口像素点方法:winfo_width()、winfo_height()2、导入内置模块:tkinter、time3、设置窗口大小、显示位置、标题内容:geometry()、title()4、旗帜的使用,本程序用了很多的的旗帜(重点)5、在局部作用域内修改全局变量:global6、组件的使用:标签Label()、按键Button()、框架Frame()7、布局管理器:pack()、grid()、place()8、事件处理方式:command、bind、bind_all待改善:1、界面太丑,功能简陋,有待优化2、秒表计时不精准,有待改善3、代码注释较少,对新踏足Python的道友不太友好创新:1、可以添加显示日期2、可以闹钟功能3、提示语可以用messagebox类实现弹出警告框"""
# 秒表计时器# 导入模块  ===============================================================
import tkinter as tk
import time# 创建一个根窗口
root = tk.Tk()
# 设置窗口显示位置及大小
root.geometry(newGeometry='400x300+450+200')
# 设置窗口标题
root.title(string='秒表计时器')# 全局变量  ===============================================================
# 创建一个可修改类型
clock = tk.StringVar()# 定义一个模式旗帜
flag_mode = 0
# 定义开始计时旗帜
flag_begin_time = 0
# 定义一个计时 秒、分、毫秒
sec = 0
min = 0
mill = 0
# 定义一个计时 秒、分、毫秒 字符型
str_sec = ''
str_min = ''
str_mill = ''count = 0   # 计数# 切换旗帜
flag_switch = 0
# 存储秒表计次内容
meter_info = ''
# 秒表计次次数
meter_count = 0# 按键功能实现    ==========================================================
# 时钟/计时切换
def switch_mode():# 声明全局变量,在局部作用域里修改global flag_mode# 显示秒表# 如果满足首次按秒表键,以及在停止秒表计时if flag_mode == 0 and not flag_switch:# 设置秒表初始状态,以及保存暂停后的数据if str_min == '' and str_sec == '' and str_mill == '':clock.set(value='00:00:00')else:clock.set(value=f'{str_min}:{str_sec}:{str_mill}')button5['text'] = '时钟'  # 按键内容更改# 设置按键形态button1['relief'] = tk.RAISEDbutton2['relief'] = tk.RAISEDbutton3['relief'] = tk.RAISEDflag_mode = 1   # 时钟模式# 显示时钟# 如果满足按时钟键,以及在停止秒表计时elif flag_mode == 1 and not flag_switch:button5['text'] = '秒表'  # 按键内容更改# 设置按键形态button1.config(relief=tk.SUNKEN)button2.config(relief=tk.SUNKEN)button3.config(relief=tk.SUNKEN)flag_mode = 0   # 秒表模式# 开始计时
def start():# 声明全局变量,在局部作用域里修改global flag_begin_time, flag_switch# 开始# 如果满足按的是秒表键,以及按开始键if flag_mode and not flag_switch:flag_begin_time = 1         # 开始秒表计时button1['text'] = '暂停'     # 更改按键内容flag_switch = 1             # 暂停秒表计时# 停止# 如果满足按的是秒表键,以及按暂停键elif flag_mode and flag_switch:flag_begin_time = 0         # 暂停秒表计时button1['text'] = '开始'     # 更改按键内容flag_switch = 0             # 开始秒表计时# 实现计时功能
def start_time():# 声明全局变量,在局部作用域里修改global min, sec, millglobal str_min, str_sec, str_millglobal count# 秒表进位if count % 100 == 0 and count != 0:count = 0mill += 1if mill % 60 == 0 and mill != 0:mill = 0sec += 1if sec % 60 == 0 and sec != 0:sec = 0min += 1# 秒表数字10以下在前面补零if mill < 10:str_mill = '0' + str(mill)else:str_mill = str(mill)if sec < 10:str_sec = '0' + str(sec)else:str_sec = str(sec)if min < 10:str_min = '0' + str(min)else:str_min = str(min)# 显示秒表clock.set(value=f'{str_min}:{str_sec}:{str_mill}')count += 100  # 累加# 重置
def reset():# 声明全局变量,在局部作用域里修改global flag_begin_timeglobal min, sec, mill, countglobal flag_switchglobal meter_info, meter_count# 如果满足秒表模式if flag_mode:# 停止秒表计时flag_begin_time = 0# 秒表清零count = 0min, sec, mill = 0, 0, 0start_time()# 复位开始按键flag_switch = 1start()# 清空秒表计次meter_info = ''label1['text'] = ''meter_count = 0# 清空秒表计次提示语label2['text'] = ''# 秒表计次
def metering():# 声明全局变量,在局部作用域里修改global meter_info, meter_count# 如果满足限制只能秒表内操作if flag_mode and flag_begin_time and meter_count < 5:meter_info += clock.get() + '\n'label1['text'] = meter_infometer_count += 1 # 秒表计次次数# 显示秒表计次上限提示语elif flag_mode and flag_begin_time and meter_count >= 5:label2['text'] = '已超过秒表计次上限!'# 创建一个主框架   ==========================================================
frame = tk.Frame(master=root, relief=tk.RIDGE, borderwidth=2)
# 创建一个功能框架
frame1 = tk.Frame(master=frame, )# 创建一个标签,用于显示时间
label = tk.Label(master=frame, textvariable=clock, height=3)
# 创建一个秒表计次标签
label1 = tk.Label(master=root)
# 创建一个提示语标签
label2 = tk.Label(master=root, height=3)# 创建功能按键
button1 = tk.Button(master=frame1, text='开始', relief=tk.SUNKEN, command=start)
button2 = tk.Button(master=frame1, text='重置', relief=tk.SUNKEN, command=reset)
button3 = tk.Button(master=frame1, text='计次', relief=tk.SUNKEN, command=metering)
button4 = tk.Button(master=frame1, text='退出', command=root.destroy)
# 计时/时钟按键
button5 = tk.Button(master=frame, text='秒表', relief=tk.FLAT, command=switch_mode)# 功能实现  =================================================================
while True:# 显示主框架位置frame.place(relx=0.5, rely=0.5, anchor=tk.CENTER)# 显示标签内容label.pack()# 显示时钟/秒表按键button5.pack()# 显示功能框架frame1.pack()# 显示按键button1.pack(side=tk.LEFT)button2.pack(side=tk.LEFT)button3.pack(side=tk.LEFT)button4.pack(side=tk.RIGHT)# 显示秒表计次label1.place(relx=0.5, rely=0.71, anchor=tk.N)# 显示秒表计次提示语label2.pack()# 实时时间if not flag_mode:clock.set(value=time.strftime('%H:%M:%S'))# 开始计时if flag_begin_time:start_time()# 刷新窗口root.update()time.sleep(0.0001)# 保持窗口运行
root.mainloop()

运行结果:

 作者:周华

创作日期:2022/9/13


http://chatgpt.dhexx.cn/article/L7K4M4Sh.shtml

相关文章

Python-桌面计时器程序设计

该程序是我个人去年学习之初练习设计&#xff0c;程序功能并没有很完善和简便。设计想法是为了能够有一个可观性高的时间报时器&#xff0c;程序设计耗时2天&#xff0c;程序分成三个部分&#xff1a;主窗体、设置窗口、运行程序。 效果展示图 功能 正/反计时功能 到时提醒/关…

专利的写作

关于专利&#xff0c;由于是研究生阶段&#xff0c;发表专利有和学校合作的机构&#xff0c;支付2000给代理人&#xff0c;只需要将想法写明白&#xff0c;和代理人沟通好&#xff0c;受理那必然是有手就行。关于研究点&#xff0c;我已经推导完毕两个月了&#xff0c;因为要做…

手把手教你如何写专利申请书

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。众所周知&#xff0c;专利是最重要的一种知识产权&#xff0c;专利制度有利于保护技术创新&#xff0c;保护专利权人的利益&#xff0c;促进社会发展&#xff0c;把我国建设成一个科技强国&#xff0c;创新大国。对于企业而…

实用新型专利撰写

文件下载 表格可在国家知识产权网下载 直达地址 说明书摘要 1、文件写法 本实用新型公开了&#xff0c;其特征在于&#xff1a;______。主要组成部分&#xff1b;主要组成部分又由哪些部分组成&#xff1b;并说明位置关系&#xff08;位于xxx一侧&#xff0c;位于顶角处…&…

专利写法与相关知识

原文&#xff1a;https://www.cnblogs.com/bozhicheng/p/7204693.html by 薄小成 https://www.jianshu.com/p/4f48add262c1 这也是一个比较好的链接 从你幸运的进入大棚124实验室那刻起&#xff0c;发论文和写专利将贯穿你整个研究生生涯。相比于发论文&#xff0c;写专利这项工…

【数据库】简介

目录 0. 文章脉络 1. 信息和数据 2. 数据处理 3. 数据库管理数据的特点 4. 数据库系统 5. 数据库管理系统 6. 数据库的三级模式 0. 文章脉络 1. 信息和数据 信息是生活中能获取的一切事物的相关描述。用书上的话来说&#xff0c;信息就是一切新的&#xff0c;有用的事实…

数据库介绍之MySQL

文章目录 数据库优点分类常见数据库RDBMSSQL定义分类sql 脚本sql 语句规范 CRUD MySQL启动连接修改密码忘记密码三层结构结构表 三范式关系数据库设计三范式经典设计多对多一对多一对一 数据库 用来存储和管理数据的仓库 优点 可存储大量数据&#xff0c;方便检索保持数据的…

Cassandra数据库介绍

Cassandra 数据库&#xff0c;值得介绍的技术细节其实挺多的。因为它很多实现思路和关系型数据库或者其他的 NoSQL 数据库&#xff0c;是有一些不同的。这种不同是在数据库设计实现思路上也是根源上的。所以衍生开来的诸多特点&#xff0c;在介绍起来就不太容易和其他数据库去类…

MySQL入门之数据库介绍及MySQL介绍

------------------------------------------------------------------------------------------------------------- 教程大纲: http://blog.csdn.net/qq78442761/article/details/76018310 ------------------------------------------------------------------------------…

数据库概述与常见数据库介绍

前言 本栏目会从数据库概念开始到数据库的SQL优化持续更新&#xff08;站在Java开发的角度&#xff0c;不站在数据库管理员&#xff08;DBA&#xff09;角度&#xff09;&#xff0c;本篇是第一篇《数据库常用概念》以开启我的数据库之旅&#xff0c;主要是讲述MySQL 8.0数据库…

ORACLE数据库介绍

什么是 ORACLE? ORACLE数据库系统是美国ORACLE公(甲骨文)提供的以分布式数据库为核心的一组软件产品&#xff0c;是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。 ORACLE通常应用于大型系统的数据库产品。 ORACLE数据库是目前世界上使用最为广泛的数…

一幅长文细学GaussDB(一)——数据库介绍

文章目录 1 数据库介绍1.1 数据库技术1.2 数据库技术发展史数据库技术产生和发展数据库三个阶段比较数据库系统优势层次模型网状模型关系模型关系数据库产品历史结构化查询语言SQL面向对象数据模型&#xff08;OO模型&#xff09;数据管理技术的新挑战NoSQL技术特点和类型主要N…

MIMIC-IV数据库介绍与使用说明

MIMIC-IV 一些基本逻辑各模块和table介绍TablesCoreHospICUEDCXRNote 官网及数据库下载网址2022.6.12 更新 在word中更加详细的列出了各table中table所代表的含义以及我在使用中所遇到的问题&#xff0c;可在资源页面进行下载。 一些基本逻辑 病人定义&#xff1a; subject_…

第一章 数据库介绍

第一章 数据库介绍 文章目录 第一章 数据库介绍一、 数据库技术&#xff1a;1、数据(Data)2、数据库(Database&#xff0c;DB)3、数据库管理系统(DBMS)4、数据库系统(Database System&#xff0c;DBS) 二、数据库发展史&#xff1a;1、三个阶段&#xff1a;2、数据库系统优势: …

一、数据库介绍

1.1数据库概述 &#xff08;1&#xff09;什么是数据库(DataBase) 简言之&#xff0c;数据库就是储存数据的仓库&#xff0c;其本质为一个文件系统(二进制存储) &#xff08;2&#xff09;什么是数据库管理系统(DataBase Management System-DBMS) DBMS是一个软件&#x…

数据库概论 - 数据库的介绍

数据库相关基础概论 大家好&#xff0c;这次给大家带来的是我的新的专栏&#xff1a;数据库&#xff0c;数据库相对来说难度不是那么高&#xff0c;大家只要勤加练习、熟记语法&#xff0c;我相信学好数据库不是什么问题&#xff0c;博主会从0剖析&#xff0c;逐步讲解数据库的…

【数据库】SRA数据库介绍及数据下载

【数据库】SRA数据库介绍及数据下载 生信技术 2021-10-06 11:00 以下文章来源于生信Alpha &#xff0c;作者BioinfoPenn 生信Alpha. 生物信息、生物统计、Linux系统、shell、R、Python等日常学习记录分享&#xff5e;欢迎交流指正&#xff5e; 【数据库】SRA数据库介绍及数…

【MySQL】数据库介绍以及MySQL数据库

目录 数据库介绍 数据库概述 数据表 MySql数据库 MySql安装 登录MySQL数据库 ​​​​​​​SQLyog&#xff08;MySQL图形化开发工具&#xff09; 数据库介绍 数据库概述 什么是数据库(DB:DataBase) 数据库就是存储数据的仓库&#xff0c;其本质是一个文件系统&…

SQL——Mysql数据库介绍

声明&#xff1a;本栏目所使用的素材都是凯哥学堂VIP学员所写&#xff0c;学员有权匿名&#xff0c;对文章有最终解释权&#xff1b;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 MySQL&#xff1a; 介绍&#xff1a; 什么是数据库&#xff1f;就是一个软件&#xff…

数据库简介

文章目录 数据库简介前言一、数据库的基本概念二、常用数据库三、关系型数据库1.关系型数据库介绍2.关系型数据库小结 四、非关系型数据库1.非关系型数据库诞生的背景2.非关系型数据库小结3.非关系型数据库种类① 键值&#xff08;Key-Value&#xff09;存储数据库② 列存储&am…