计时器
源代码框架来自于 @痴情一笑恋红颜的一篇博客.
然后我对源码进行了修改,添加了停止,继续,清空的功能
,并对显示进行了修饰
代码如下:
from tkinter import *
# import subprocess
# import os
import sys
import math
counter = 0
stopbool = True
emptybool = True
#主函数
def counter_label(label,counter):
if counter:
counter = 0
def count():
global counter
global stopbool
global emptybool
counter += 1
# 配置属性
# 区间大小
# label.config(width=10, height=2)
# 文本内容
label.config(text = str(math.floor(counter/60%60/10))+str(math.floor(counter/60%10))+':'+str(math.floor(counter%60/10))+str(counter%10))
# 字体颜色
label.config(fg='red')
# label位置
# label.config(anchor='c')
#判断stopbool选择是否继续循环
if stopbool and emptybool:
# after函数的第一个参数设置毫秒数后,调用count函数
label.after(1000, count)
else:
#由于获取到stopbool和emptybool更改的值后,counter还会加1,并且在label标签中显示出来,所以需要减去1,并从新显示,由于计算机计算过快,我们就不会看到停止后数还往上加1的情况
counter -= 1
label.config(text = str(math.floor(counter/60%60/10))+str(math.floor(counter/60%10))+':'+str(math.floor(counter%60/10))+str(counter%10),fg='black')
count()
#控件函数
def Quit():
# subprocess.call("pause",shell=True)
# os.system('pause')
# input()
sys.exit()
def start():
global stopbool
global emptybool
stopbool = True
emptybool = True
counter_label(label,counter)
start['text']="继续"
def stop():
global stopbool
stopbool = False
def empty():
global emptybool
global counter
emptybool = False
counter = 0
label.config(text="00:00", fg="black")
start['text'] = '开始'
#开始
root = Tk()
root.title("计时器")
label = Label(root,text="00:00",fg="black",width=10, height=2,anchor='c')
label.pack(side='left')
# 查找方法或属性
# print help(label.config)
# print help(label.after)
#控件
button = Button(root, text='退出', width=5, command=Quit, anchor='c')
button.pack(side='right') # 或command=root.destory小伙窗口
start = Button(root, text='开始', width=5, command=start, anchor='c')
start.pack(side='left')
stop = Button(root, text='停止', width=5, command=stop, anchor='c')
stop.pack(side='right')
empty = Button(root, text='清空', width=5, command=empty, anchor='c')
empty.pack(side='right')
root.mainloop()
运行结果如下:
初始界面
开始后
停止后
清空后