利用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中yield生成器的用法
Aug 05 Python
深入理解Python中变量赋值的问题
Jan 12 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
Jun 09 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
Apr 01 Python
python脚本开机自启的实现方法
Jun 28 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
如何通过Python3和ssl实现加密通信功能
May 09 Python
如何理解python中数字列表
May 29 Python
使用Keras画神经网络准确性图教程
Jun 15 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 Python
python中K-means算法基础知识点
Jan 25 Python
浅谈怎么给Python添加类型标注
Jun 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
怎样辨别一杯好咖啡
2021/03/03 新手入门
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
Laravel 实现数据软删除功能
2019/08/21 PHP
laravel 框架执行流程与原理简单分析
2020/02/01 PHP
Laravel 框架控制器 Controller原理与用法实例分析
2020/04/14 PHP
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
学习Node.js模块机制
2016/10/17 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
Python中Collection的使用小技巧
2014/08/18 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
Python2和Python3中print的用法示例总结
2017/10/25 Python
python的变量与赋值详细分析
2017/11/08 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
后勤人员自我评价怎么写
2013/09/19 职场文书
毕业生找工作的自我评价
2013/10/18 职场文书
如何写自我鉴定
2014/03/19 职场文书
新春文艺演出主持词
2014/03/27 职场文书
政府个人对照检查材料
2014/08/28 职场文书
婚庆答谢词大全
2015/09/29 职场文书
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android