利用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 相关文章推荐
pycharm 使用心得(二)设置字体大小
Jun 05 Python
python里将list中元素依次向前移动一位
Sep 12 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
Oct 11 Python
python实现给微信公众号发送消息的方法
Jun 30 Python
Python中工作日类库Busines Holiday的介绍与使用
Jul 06 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
Apr 05 Python
Python之列表的插入&amp;替换修改方法
Jun 28 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
Python调用graphviz绘制结构化图形网络示例
Nov 22 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
Python super()函数使用及多重继承
May 06 Python
Scrapy 配置动态代理IP的实现
Sep 28 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创建PDF中文文档
2006/10/09 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
jQuery中on()方法用法实例详解
2015/02/06 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
js实现每日签到功能
2018/11/29 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
python递归计算N!的方法
2015/05/05 Python
自己使用总结Python程序代码片段
2015/06/02 Python
python中range()与xrange()用法分析
2016/09/21 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
实习证明格式范文
2014/10/14 职场文书
2014年人事部工作总结
2014/12/03 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
2015年母亲节寄语
2015/03/23 职场文书
工伤调解协议书
2016/03/21 职场文书
Django Paginator分页器的使用示例
2021/06/23 Python
python周期任务调度工具Schedule使用详解
2021/11/23 Python
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript
Python+pyaudio实现音频控制示例详解
2022/07/23 Python