刷词程序小模块---计时器
文章目录
前言
因为自己英语水平不高,又即将面临着一个很重要的英语考试,所以突发奇想自己做一个刷单词的程序,而这个程序也就应运而生了。本文章主要介绍我做的一个小模块--计时器功能。在做的时候我参照了几个博主的文档,收益良多,现在就介绍在本文。
一、计时器的原理
时间戳
学过编程的都应该知道有这么一个东西叫做时间戳,时间戳是从1970年1月1日期所有秒的和,在计算机中计时,主要计是对时间戳的计算。
好比现在2022-09-17 23:34的时间戳大概就是1663428902,而我们计时就记录这个时间点,然后每过多少毫秒去刷新一次时间戳,用新的时间戳减去开始记录的时间戳就OK了,就得到我们的计时了。
二、步骤
1.引入库
这里我们只需要两个库,一个是tkinter库,另一个用来获取时间戳的time库,在做计时器时,我们需要用到tkinter的一个after方法,这个方法可以设置多少时间后自动调用一次指定函数。
from tkinter import * import time
2.代码示例(含注释)
废话不多说,直接上代码(这里只是我程序的部分代码,完整代码,请持续关注我)
from tkinter import *
import time
class ji(Frame): # 继承Frame类
def __init__(self, master=None):
Frame.__init__(self, master)
self.root = master # 定义内部变量root
self.root.geometry('%dx%d' % (600, 620)) # 设置窗口大小
self.tt = StringVar() # 时间 计时
self.tt.set('00:00') # 设置初始时间
self.st = 0 # 开始时的时间戳
self.el = 0 # 当前时间戳
self.timer = None
self.creatPage()
# 秒钟化分钟函数
def fen(self, op):
op = op // 1
op = int(op)
if op < 60:
if op >= 10:
return '00:{}'.format(op)
else:
return '00:0{}'.format(op)
else:
temp = op // 60
tem = op % 60
if temp >= 10:
if tem >= 10:
return '{}:{}'.format(temp, tem)
else:
return '{}:0{}'.format(temp, tem)
else:
if tem >= 10:
return '0{}:{}'.format(temp, tem)
else:
return '0{}:0{}'.format(temp, tem)
# 计算时间戳函数
def uu(self):
self.el = time.time() - self.st # 计时所得到的的秒的总数
self.tt.set(self.fen(self.el)) # 更新新的时间
self.timer = self.root.after(50, self.uu) # 在给定时间后调用函数一次。50毫秒
# 开始函数
def start(self):
self.st = time.time() - self.el # 计时开始的时间戳
self.uu() # 调用计算时间戳的函数
def creatPage(self):
self.start()
tk = Label(self, text='你已经学习:')
tk.grid(row=0, column=0, stick=W)
tk2 = Label(self, textvariable=self.tt)
tk2.grid(row=0, column=1, stick=E)
三、效果图
程序还没有写完,稍后将完整代码及打包程序发出