|
|
今天分享一个编写计时器的Python源码- print("作 者: 趣探坊&清风Ring")
- print("点击开始按钮 开始计时 同时按钮上的标签变为暂停 点击暂停按钮 停止计时 同时按钮上的标签变为开始每一次暂停所对应的计时时间都记录到 record.txt点击清零按钮 停止计时 时间变为 00:00:000")
- import tkinter
- import threading
- import time
-
- # 创建窗口
- from1 = tkinter.Tk()
- # 窗口标题
- from1.title('清风Ring计时器')
- # 窗口大小
- 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()
复制代码 效果:(点开观看GIF图)

要我出python教程的评论区回复“教程”
|
|