py(gui编程)计时器

计时器

源代码框架来自于 @痴情一笑恋红颜的一篇博客.
然后我对源码进行了修改,添加了停止,继续,清空的功能
,并对显示进行了修饰

代码如下:

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()

运行结果如下:
初始界面
在这里插入图片描述开始后
在这里插入图片描述停止后
在这里插入图片描述清空后
在这里插入图片描述

仅以记录,若有大佬发现不足或改进之法,望留言

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值