#coding=utf8 ''' python的控制台应用程序和Python模型文件通常都是以.py为后缀, 而Python的GUI应用程序以.pyw作为文件后缀。 .py和.pyw在Linux系统都是能正常使用的, 在Windows系统为了确保.pyw文
'''
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 64位windows下载链接:http://pan.baidu.com/s/1mhTMGkC