利用QT写一个极简单的图形化Python闹钟程序


Posted in Python onApril 07, 2015

今天我们讲一下用Python写的GUI小程序。一个小闹钟(只是屏幕提示,没有声音哦)

让我们先介绍这个闹钟如何奇葩。

需要通过命令行启动。

没有标题栏。

没菜单。

甚至没有关闭按钮。

没有运行界面。

看到这里想必大家要问了,何必去做一个这样弱爆了的程序呢。显然,教育意义大于其实际用处。

像其他的模块一样,QT界面包是需要加载的。

我们用到了命令行输入,所以,sys模块也是必须的。

用到了时间,但是我们不需要使用time模块,我们用QT提供的QTime模块。

让我们先写import 语句部分。
 

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
app = QApplication(sys.argv)

这是一个控制qt程序命脉的类,之后我们会慢慢解释。在每一个Qt程序中,都会找到类似的语句。

之后就是输入闹钟时间了。上程序。
 

try:
  message = "Alert!"
  if len(sys.argv) < 2:
    raise ValueError
  hours, mins = sys.argv[1].split(":")
  due = QTime(int(hours), int(mins))
  if not due.isValid():
    raise ValueError
  if len(sys.argv) > 2:
    message = " ".join(sys.argv[2:])
except ValueError:
  message = "Usage: alert.pyw HH:MM [optional message]"

其中包含了异常处理,对于一个应用程序,我们应该将所有的异常情况都考虑进去。

程序中使用raise 来触发异常。迫使程序进入我们的预想轨道。

显然,上面的程序是不够的,它并没有时间判断和GUI部分。

如何判断时间是否到了呢,我们给出一个不是特别准确的方法,定时判断。
 

import time
while QTime.currentTime() < due:
#休眠20秒
  time.sleep(20)

当时间到了我们就会跳到下一步,创建一个窗体,延迟60s 后关闭。
 

label = QLabel("<font color=red size=72><b>" + message + "</b></font>")
label.setWindowFlags(Qt.SplashScreen)
label.show()
QTimer.singleShot(60000, app.quit) # 1 minute
app.exec_()

看来,我们又需要写一个关于 QTime模块的介绍了。

现在把所有的句子放在一起。让我们测试下。

附完整代码:
 

import sys
import time
from PyQt4.QtCore import *
from PyQt4.QtGui import *
app = QApplication(sys.argv)
try:
  message = "Alert!"
  if len(sys.argv) < 2:
    raise ValueError
  hours, mins = sys.argv[1].split(":")
  due = QTime(int(hours), int(mins))
  if not due.isValid():
    raise ValueError
  if len(sys.argv) > 2:
    message = " ".join(sys.argv[2:])
except ValueError:
  message = "Usage: alert.pyw HH:MM [optional message]" # 24hr clock
while QTime.currentTime() < due:
  time.sleep(20) # 20 seconds
label = QLabel("<font color=red size=72><b>" + message + "</b></font>")
label.setWindowFlags(Qt.SplashScreen)
label.show()
QTimer.singleShot(60000, app.quit) # 1 minute
app.exec_()
Python 相关文章推荐
介绍Python的Django框架中的QuerySets
Apr 20 Python
用Python脚本来删除指定容量以上的文件的教程
May 04 Python
Pthon批量处理将pdb文件生成dssp文件
Jun 21 Python
Python函数中的函数(闭包)用法实例
Mar 15 Python
Python中多线程的创建及基本调用方法
Jul 08 Python
python3+PyQt5自定义视图详解
Apr 24 Python
python 字典操作提取key,value的方法
Jun 26 Python
python 的 scapy库,实现网卡收发包的例子
Jul 23 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
Python通过socketserver处理多个链接
Mar 18 Python
python os模块常用的29种方法使用详解
Jun 02 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
Nov 05 Python
分析Python编程时利用wxPython来支持多线程的方法
Apr 07 #Python
Python中尝试多线程编程的一个简明例子
Apr 07 #Python
Python的Flask框架中Flask-Admin库的简单入门指引
Apr 07 #Python
用Python实现一个简单的线程池
Apr 07 #Python
浅谈Python程序与C++程序的联合使用
Apr 07 #Python
浅要分析Python程序与C程序的结合使用
Apr 07 #Python
python实现根据用户输入从电影网站获取影片信息的方法
Apr 07 #Python
You might like
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
2013/06/06 PHP
使用PHP计算两个路径的相对路径
2013/06/14 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
PHP防止跨域提交表单
2013/11/01 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
jQuery Ajax()方法使用指南
2014/11/19 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
javascript每日必学之继承
2016/02/23 Javascript
快速将Vue项目升级到webpack3的方法步骤
2017/09/14 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
js实现抽奖功能
2020/11/24 Javascript
pytorch构建网络模型的4种方法
2018/04/13 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
2018/07/18 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
详解django中Template语言
2020/02/22 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
python能否java成为主流语言吗
2020/06/22 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
家长对孩子的感言
2014/03/10 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
召开会议通知范文
2015/04/15 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书