今天就利用PySide2实现一个可以计时功能的小程序。下面是它的实际运行效果动图。

实现步骤:
1.设计UI界面 timer.ui
2.利用转化工具 将timer.ui转换成 ui_timer.py文件
3.初始化界面程序
4.实现设置时间功能
5.实现开始计时功能
1.设计UI界面 timer.ui
根据功能,我们需要一个显示时间的部件,这里采用的是LCD Number显示部件,两个功能按钮选用的都是pushButton部件,完成好保存到桌面上。

预览效果


2.利用转化工具 将timer.ui转换成 ui_timer.py文件
利用pyside2-uic工具将ui文件转换成py文件。


转化后的ui_timer.py代码,省去了我们手写代码布局实现了,非常方便:

3.初始化界面程序
这里将ui_timer当作模块导入,里面有个Ui_Timer类,创建主窗体对象window和ui界面对象timer,最后显示窗体,运行程序就出现了之前的计时UI界面了。

上面是以面向过程的方法实现了,下面将其改成面向对象的方法,便于我们组织管理代码和添加新功能。

初始化开始数字为0。

4.实现设置时间功能
导入QInputDialog输入对话框,添加一个timerReset方法设置时间。在setup方法中需要将按钮的点击事件与设置时间的方法先绑定,这样当触发按钮时,就会调用timerReset方法了。


5.实现开始计时功能
计时功能相对比较复杂一点,因为我们需要有实际的计时功能,同时又要保证lcd显示器上的数字变化。为了实现计时功能,这里从此那个QtCore核心模块中导入QTimer计时方法,同时在QtWidget中导入了QMessageBox消息弹窗框方法。
现在setup设置一些初始变量和创建一个timer的计时器,绑定开始按钮和timerStart方法。
点击开始后需要设置按钮禁用模式通过setEnabled方法,之后开始计时功能,里面的1000是ms,也就是1s后回去调用nextSecond方法,在nextSecond方法中,我们需要先判断当前的时间是否为0了,如果为0,就停止计时,同时弹出时间到的消息提醒窗口,否则就每次数值显示减1,同时不断重复调用自己。

完成代码:


(全文完)
长按二维码,加关注!叶子陪你玩
欢迎转载,转载请注明出处!
欢迎关注公众微信号:叶子陪你玩编程
分享自己的python学习之路
网友评论