今天,我们尝试用python来编写一个简单的PC端番茄钟,需要实现的功能如下:启动时“滴”一声并询问:“休息时间结束!是否开始一个新的番茄钟?”
如果用户点击"OK",则开始计时,点击“取消”则退出程序。
25分钟后“滴”一声并询问:“工作时间结束!是否开始休息?”
如果用户点击"OK",则开始计时,点击“取消”则退出程序。
5分钟后回到第1步,开始下一轮循环。
为了实现以上功能,我们需要用到三个python内建库:winsound、tkinter和time。
1. winsound
顾名思义,winsound能让windows系统发出声音。这里我们要用到其中的一个Beep()方法,具体用法如下:
from winsound import Beep
Beep(600, 1000)
Beep的第一个参数代表音量大小,第二个参数代表蜂鸣持续时间长短,(600, 1000)的组合是我尝试过的比较理想的组合,当然我们也可以选择其他的数值。
2. tkinter
tkinter是python内建的一个图形界面(GUI)工具包,里面提供了各种组件,熟悉web交互式设计的同学应该对它很有亲近感。不熟悉也不要紧,可以使用tkinter提供的一些高级模块,比如messagebox。
messagebox就是“消息框”的意思,它有askokcancel askquestion showinfo等不同的类型,我们可以选择自己需要的类型。这里我选择的是askokcancel,用法是:
from tkinter.messagebox import askokcancel
askokcancel(title="我的标题", message="我的提示")
它的模样如图所示:
如果点击“确定”,对话框返回True值,点击“取消”返回False值。
3. time
time是一个跟时间有关的库。在这个例子中,我们要用time库中的sleep()方法来计时,比如让程序休眠25分钟:
from time import sleep
sleep(60*25) # 25分钟等于25*60秒
4. 全部代码
有了这些基本方法之后,我们可以用一个while循环和一个if...else...条件结构来编写我们的番茄钟。
from tkinter.messagebox import askokcancel
from time import sleep
from winsound import Beep
while True:
Beep(600, 1000)
if askokcancel(title="休息时间结束!", message="开始一个新的番茄钟吗?"):
sleep(25*60)
Beep(600, 1000)
if askokcancel(title="工作时间结束", message="开始休息吗?"):
sleep(5*60)
else:
break
else:
break
说明:break语句的作用是从while循环中跳出。
为了使后面打包的exe程序尽量小,我们从库中导入单个的函数,而不是整个库。
下一篇我们将介绍如何把python文件打包成可独立运行的exe程序。