用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - python代码库

计时器

2021-04-02 作者:帅丘举报

[python]代码库

''' ****************************************
*   日  期: 2021-01-23
*   版  本: V1.1
*   文件名: 计时器\\计时器_1_0.py
*   描  述: 点击开始按钮 开始计时 同时按钮上的标签变为暂停
            点击暂停按钮 停止计时 同时按钮上的标签变为开始
            每一次暂停所对应的计时时间都记录到 record.txt
            点击清零按钮 停止计时 时间变为 00:00:000
*   作  者: 帅哥哥
**************************************** '''


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


网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。