py计时器 为了孙曌凌/CSDN

我有个朋友,他是一名py新手,我最近编一个由窗口(tkinter)实现的计时器,请大佬多多照顾

源代码展示:

import tkinter
import threading
import time

# 创建窗口
from1 = tkinter.Tk()
# 窗口标题
from1.title('吴一凡计时器')
# 窗口大小
from1.minsize(400, 400)

isloop = False  # 初始化按钮False为停止 True为开始
var = tkinter.StringVar()
stopid = None  # 定义一个空值

'''********* 计时函数 *********'''


def gettime():
    global isloop
    global stopid
    global star
    global fo

    elap = time.time() - star  # 获取时间差

    if isinstance(stopid, float):
        a = stopid
        elap = elap + a
    minutes = int(elap / 60)  # 分钟
    seconds = int(elap - minutes * 60.0)  # 秒
    hseconds = int((elap - minutes * 60.0 - seconds) * 1000)  # 毫秒
    var.set('%02d:%02d:%03d' % (minutes, seconds, hseconds))

    if isloop == False:
        but1['text'] = '继续'
        stopid = elap  # 把暂停时的时间差赋给 stopid (有记忆)
        fo.write('%02d:%02d:%03d' % (minutes, seconds, hseconds) + "\n")  # 记录时间
        fo.close()  # 关闭文件
        return

    from1.after(1, gettime)  # 每隔1ms调用函数自身获取时间


'''********* 开始\暂停按钮函数 **********'''


def newtask():
    global isloop
    global star
    global fo
    if but1['text'] == '开始' or but1['text'] == '继续':  # 根据按钮的文本来判断是否开启循环
        if but1['text'] == '开始':
            fo = open("record.txt", "w")  # 开始时清楚上一次记录的内容
        else:
            fo = open("record.txt", "a")  # 追加暂停时的时间
        but1['text'] = '暂停'
        isloop = True
        star = time.time()  # 获取当前时间
        # 建立线程
        t = threading.Thread(target=gettime)
        # 开启线程
        t.start()
    else:
        isloop = False


'''******* 清零按钮函数 ********'''


def clearing():
    global isloop
    global stopid
    isloop = False  # 初始化按钮为停止
    stopid = None  # 定义一个空值
    var.set('00:00:000')
    but1['text'] = '开始'


# 开始\暂停 按钮
but1 = tkinter.Button(from1, text='开始', command=newtask)
but1.place(x=95, y=280, width=80, height=50)  # 按钮位置和大小
# 重置按钮
but2 = tkinter.Button(from1, text='清零', command=clearing)
but2.place(x=225, y=280, width=80, height=50)
# # 显示时间
var.set('00:00:000')  # 初始化时间
lab1 = tkinter.Label(from1, textvariable=var, font=("Arial Bold", 30), foreground="red")
lab1.place(x=110, y=150)

# from1.overrideredirect(1) # 隐藏标题栏 最大化最小化按钮
from1.attributes("-toolwindow", 1)  # 去掉窗口最大化最小化按钮,只保留关闭

# 显示窗体
from1.mainloop()

在此也希望我的朋友能够好好学py吧,我得睡觉了,古德拜

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值