利用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实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
Jul 11 Python
跟老齐学Python之大话题小函数(1)
Oct 10 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
Jan 10 Python
Python数字图像处理之霍夫线变换实现详解
Jan 12 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
PyQt5每天必学之关闭窗口
Apr 19 Python
python3监控CentOS磁盘空间脚本
Jun 21 Python
如何在Python 游戏中模拟引力
Mar 27 Python
python中watchdog文件监控与检测上传功能
Oct 30 Python
如何使用Python进行PDF图片识别OCR
Jan 22 Python
flask框架中的cookie和session使用
Jan 31 Python
python爬取企查查企业信息之selenium自动模拟登录企查查
Apr 08 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 图片水印类代码
2012/08/27 PHP
php导入模块文件分享
2015/03/17 PHP
php实现对两个数组进行减法操作的方法
2015/04/17 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
Vue2.5通过json文件读取数据的方法
2018/02/27 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
Python实现栈的方法
2015/05/26 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
详解python校验SQL脚本命名规则
2019/03/22 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
2019/08/13 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
keras打印loss对权重的导数方式
2020/06/10 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
python中的时区问题
2021/01/14 Python
HTML5 实现图片上传预处理功能
2020/02/06 HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
2020/03/17 HTML / CSS
AE美国鹰日本官方网站: American Eagle Outfitters
2016/12/10 全球购物
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
计算机应用专业毕业生求职信
2013/10/24 职场文书
商务英语专业毕业生自荐信
2013/11/05 职场文书
少先队入队活动方案
2014/02/08 职场文书
致接力运动员广播稿
2014/02/17 职场文书
詹天佑教学反思
2014/04/30 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
2015年法务工作总结范文
2015/05/23 职场文书
建国大业电影观后感
2015/06/01 职场文书
红楼梦读书笔记
2015/06/25 职场文书
小学运动会通讯稿
2015/07/18 职场文书
Python 文字识别
2022/05/11 Python