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

 更新时间:2015年04月07日 16:02:38   投稿:goldensun  
这篇文章主要介绍了利用QT写一个极简单的图形化Python闹钟程序,核心代码只有25行,显示屏幕提示而没有闹铃声音,需要的朋友可以参考下

今天我们讲一下用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使用thread模块实现多线程的操作

    Python使用thread模块实现多线程的操作

    线程(Threads)是操作系统提供的一种轻量级的执行单元,可以在一个进程内并发执行多个任务,每个线程都有自己的执行上下文,包括栈、寄存器和程序计数器,本文给大家介绍了Python使用thread模块实现多线程的操作,需要的朋友可以参考下
    2024-10-10
  • Python实现随机从图像中获取多个patch

    Python实现随机从图像中获取多个patch

    经常有一些图像任务需要从一张大图中截取固定大小的patch来进行训练。本文就来和大家聊聊如何用Python实现随机从图像中获取多个patch,感兴趣的可以了解一下
    2022-08-08
  • 文件上传服务器-jupyter 中python解压及压缩方式

    文件上传服务器-jupyter 中python解压及压缩方式

    这篇文章主要介绍了文件上传服务器-jupyter 中python解压及压缩方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python通过Seq2Seq实现闲聊机器人

    python通过Seq2Seq实现闲聊机器人

    这篇文章主要介绍了python通过Seq2Seq实现闲聊机器人,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-04-04
  • 如何在Python 游戏中模拟引力

    如何在Python 游戏中模拟引力

    这篇文章主要介绍了在你的 Python 游戏中模拟引力的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 如何用python整理附件

    如何用python整理附件

    本篇文章给大家整理了关于如何用python整理附件的相关知识点,学习python的朋友可以跟着测试下。
    2018-05-05
  • python beautiful soup库入门安装教程

    python beautiful soup库入门安装教程

    Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。今天通过本文给大家分享python beautiful soup库入门教程,需要的朋友参考下吧
    2021-08-08
  • Python可迭代对象操作示例

    Python可迭代对象操作示例

    这篇文章主要介绍了Python可迭代对象操作,涉及Python列表生成式、迭代器、数据遍历等相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • 通过python-pptx模块操作ppt文件的方法

    通过python-pptx模块操作ppt文件的方法

    这篇文章主要介绍了通过python-pptx模块操作ppt文件的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,本文给大家介绍的需要的朋友可以参考下
    2020-12-12
  • 新版pycharm配置运行参数的教程/pycharm2023

    新版pycharm配置运行参数的教程/pycharm2023

    这篇文章主要介绍了新版pycharm配置运行参数的教程/pycharm2023,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01

最新评论