倒计时小工具挺有用的,如果你是学生的话,可以折腾学习一下这个小工具。我用的是python+Tkinter写出来的。
这里面需要说一下Tkinter,Tkinter是Python的一个标准包,因此我们并不需要安装它。我们将从创建一个窗口开始,然后我们在其之上加入一些小组件,比如按钮,复选框等,并使用它们的一些属性。话不多说,让我们开始吧!
#!/usr/bin/python3
import tkinter
top = tkinter.Tk()
# 进入消息循环
top.mainloop()
- 1、导入 Tkinter 模块
- 2、创建控件
- 3、指定这个控件的 master, 即这个控件属于哪一个
- 4、告诉 GM(geometry manager) 有一个控件产生了。
显示出来如上图所示,出现了一个框框,这样子我们就用上了tkinter模块了。
def __init__(self,master):
frame = Frame(master)
frame.pack()
self.entryWidget = Entry(frame)
self.entryWidget["width"] = 15
self.entryWidget.pack(side=LEFT)
self.hi_there = Button(frame, text="开始", command=self.start)
self.hi_there.pack(side=LEFT)
self.button = Button(frame, text="退出", fg="red", command=frame.quit)
self.button.pack(side=LEFT)
首先初始化数据和窗口数据,然后新建两个按钮,开始和退出。上面的函数__init__是对类的初始化,这个类中所有的属性,都应该写在这里面。我们来分析一下上面的来自Tkinter 模块的控件。 Button(frame, text="开始", command=self.start) 就是生成一个按钮,然后这里面的frame就是Tkinter.Tk(),显示在按钮之上的是text文本,最后响应函数是self.start。也就是按下按钮会触发当前类下的函数start。
def start(self):
text = self.entryWidget.get().strip()
if text != "":
num = int(text)
self.countDown(num)
这是开始按钮触发,用到了Entry控件。其实就是读取text里面的字符串,当字符串不为空的时候,将它强制转换为整数秒,最后传送到计算函数countDown。
def countDown(self,seconds):
lbl1.config(bg='yellow')
lbl1.config(height=3, font=('times', 20, 'bold'))
for k in range(seconds, 0, -1):
if k == 30:
print("\a")
if k== 29:
print("\a")
if k== 28:
print("\a")
lbl1["text"] = k
root.update()
time.sleep(1)
lbl1.config(bg='red')
lbl1.config(fg='white')
lbl1["text"] = "时间到!"
tkMessageBox.showinfo("时间到!","时间到!")
countDown计算这秒数,其实就是一个循环,步数为-1,然后用上time.sleep(1)让它每一秒后才继续。到最后时间都了,修改背景,弹窗时间到了。
通过上面这个小东西,可以认识到Tkinter。基本是用python做带有界面的程序都会想到Tkinter,有需要的小伙伴可以去学习一下。当然还有更多有用的控件,如Listbox,Menu,Radiobutton等更多的控件可以去学习一下。
欢迎和我讨论有关程序的问题,也可以答疑。关注公众号:诗一样的代码,交一个朋友。觉得有用的话,留言回复下呗。