- #coding=utf8
- '''''
- python的控制台应用程序和Python模型文件通常都是以.py为后缀,
- 而Python的GUI应用程序以.pyw作为文件后缀。
- .py和.pyw在Linux系统都是能正常使用的,
- 在Windows系统为了确保.pyw文件能正常使用,使用pythonw.exe文件运行.pyw文件。
- 这确保当运行一个Python GUI应用程序时,不必在控制窗口出现。
- 在Mac OS X系统,python GUI应用程序必须使用.pyw后缀的文件。
- '''
- #第一步导入相关包
- import sys #把命令行参数保存在sys.argv列表,因此导入此包
- import time #需要调用sleep函数
- #需要PyQt创建GUI和QTime类
- from PyQt4.QtCore import *
- from PyQt4.QtGui import *
- '''''
- 第二步创建一个QApplication对象
- 每个PyQt GUI应用必须有一个QApplication对象。
- 该对象提供操作全局信息的入口,例如:应用目录、屏幕尺寸等等。
- 该对象也提供事件循环(event loop),其他功能在这不做赘述。
- '''
- #创建一个带有命令行参数的应用对象
- #PyQt能识别自己的一些命令行参数,如:-geometry 、-style
- #如果QApplication能识别参数中的信息,它将操作它们,然后从给定的列表中把它们移除。
- #QApplication识别的参数列表是在QApplication初始化文档中给定的。
- app=QApplication(sys.argv)
- try:
- #创建一个变量保存当前时间
- due=QTime.currentTime()
- #创建一个变量并赋值
- message="Alert!"
- #如果命令行列表中元素个数小于2
- #报ValueError错误
- if len(sys.argv)<2:
- raise ValueError
- #命令列表中的第二个元素以:拆分
- #并把值保存在hours、mins变量中
- hours,mins=sys.argv[1].split(":")
- #把从命令行获取的小时、分钟强制转为整型
- #然后调用QTime进行拼接,更新due的值
- due=QTime(int(hours),int(mins))
- #判断due是否是有效QTime
- #如果due不是有效的QTime则报ValueError
- if not due.isValid():
- raise ValueError
- #如果命令行参数列表大于2
- #把列表中第三位元素机之后的元素连接在message上
- if len(sys.argv)>2:
- message=" ".join(sys.argv[2:])
- #出现ValueError异常,把程序使用方法保存在message变量中
- except ValueError:
- message="Usage:Demo_1.pyw HH:MM [optional message]" #24小时时钟
- #显示信息,判断当前时间是否小于due时间
- while QTime.currentTime<due:
- time.sleep(10) #设置循环时间间隔为10秒
- '''''
- 一个GUI应用程序需要一个widgets,
- 创建一个label用于显示message。
- QLabel能接受HTML文本,
- 因此通过html标签设置显示字体的样式:white ,28
- 在PyQt中,任何widget都能被作为顶层(top-level)窗口,
- 即使是一个button或label。
- 当一个widget被这样使用,PyQt自动给它一个标题条。
- '''
- messageLabel=QLabel("<font color=red size=70><b>"+message+"</b></font>")
- #不想该应用存在一个标题条,所有设置label窗口flags为splash screen(闪屏)
- #设置屏幕标记为闪屏(Qt.SplashScreen),闪屏不存在标题条(title bar)
- messageLabel.setWindowFlags(Qt.SplashScreen)
- '''''
- 由于是在用户窗口创建的label,
- 所有需要使用show()方法来显示label
- 此时label窗口未显示。
- 对show()的调用只是安排一个“paint event(绘画事假)”,
- 它向QApplication对象的事件队列添加一个新事件,
- 该事件是一个绘制指定的小部件(widget)的请求。
- '''
- messageLabel.show()
- '''''
- Python库的time.sleep()功能需要几秒钟,
- QTimer.singleShot()函数需要一个毫秒数。
- 给singleShot()方法两个参数:距离超时的时长、超时之后调用的方法。
- 超时之后调用的方法在PyQt中被称作"slot(插槽)"。
- 尽管PyQt文档中条款称做"Python slot(python插槽)",
- "Qt slot"用来区分Python的__slots__。
- Python的__slots__是Python语言引用的一种新的风格类型。
- '''
- #设置距离超时的时长为一分钟
- #超时之后调用quit方法
- #quit方法用于清理GUI应用终端的方法
- #它关闭任何打开的窗口并释放占用的任何资源,然后退出。
- QTimer.singleShot(60000, app.quit)
- #调用该方法关闭QApplication对象事件循环。
- app.exec_()
PyQt4
最新推荐文章于 2024-09-08 10:11:00 发布