PyQt4

[python]  view plain  copy
  1. #coding=utf8  
  2. ''''' 
  3. python的控制台应用程序和Python模型文件通常都是以.py为后缀, 
  4. 而Python的GUI应用程序以.pyw作为文件后缀。 
  5. .py和.pyw在Linux系统都是能正常使用的, 
  6. 在Windows系统为了确保.pyw文件能正常使用,使用pythonw.exe文件运行.pyw文件。 
  7. 这确保当运行一个Python GUI应用程序时,不必在控制窗口出现。 
  8. 在Mac OS X系统,python GUI应用程序必须使用.pyw后缀的文件。 
  9.  
  10. '''  
  11. #第一步导入相关包  
  12. import sys  #把命令行参数保存在sys.argv列表,因此导入此包  
  13. import time #需要调用sleep函数  
  14. #需要PyQt创建GUI和QTime类  
  15. from PyQt4.QtCore import *  
  16. from PyQt4.QtGui import  *  
  17.   
  18. ''''' 
  19. 第二步创建一个QApplication对象 
  20. 每个PyQt GUI应用必须有一个QApplication对象。 
  21. 该对象提供操作全局信息的入口,例如:应用目录、屏幕尺寸等等。 
  22. 该对象也提供事件循环(event loop),其他功能在这不做赘述。 
  23. '''  
  24. #创建一个带有命令行参数的应用对象  
  25. #PyQt能识别自己的一些命令行参数,如:-geometry 、-style  
  26. #如果QApplication能识别参数中的信息,它将操作它们,然后从给定的列表中把它们移除。  
  27. #QApplication识别的参数列表是在QApplication初始化文档中给定的。  
  28. app=QApplication(sys.argv)  
  29.   
  30.   
  31. try:  
  32.     #创建一个变量保存当前时间  
  33.     due=QTime.currentTime()  
  34.     #创建一个变量并赋值  
  35.     message="Alert!"   
  36.     #如果命令行列表中元素个数小于2  
  37.     #报ValueError错误  
  38.     if len(sys.argv)<2:   
  39.         raise ValueError  
  40.     #命令列表中的第二个元素以:拆分  
  41.     #并把值保存在hours、mins变量中  
  42.     hours,mins=sys.argv[1].split(":")  
  43.     #把从命令行获取的小时、分钟强制转为整型  
  44.     #然后调用QTime进行拼接,更新due的值  
  45.     due=QTime(int(hours),int(mins))  
  46.     #判断due是否是有效QTime  
  47.     #如果due不是有效的QTime则报ValueError  
  48.     if not due.isValid():  
  49.         raise ValueError  
  50.     #如果命令行参数列表大于2  
  51.     #把列表中第三位元素机之后的元素连接在message上  
  52.     if len(sys.argv)>2:  
  53.         message=" ".join(sys.argv[2:])  
  54. #出现ValueError异常,把程序使用方法保存在message变量中  
  55. except ValueError:  
  56.     message="Usage:Demo_1.pyw HH:MM [optional message]"  #24小时时钟  
  57.   
  58.   
  59. #显示信息,判断当前时间是否小于due时间  
  60. while QTime.currentTime<due:  
  61.     time.sleep(10)  #设置循环时间间隔为10秒  
  62.       
  63. ''''' 
  64. 一个GUI应用程序需要一个widgets, 
  65. 创建一个label用于显示message。 
  66. QLabel能接受HTML文本, 
  67. 因此通过html标签设置显示字体的样式:white ,28 
  68.  
  69. 在PyQt中,任何widget都能被作为顶层(top-level)窗口, 
  70. 即使是一个button或label。 
  71. 当一个widget被这样使用,PyQt自动给它一个标题条。 
  72. '''  
  73. messageLabel=QLabel("<font color=red size=70><b>"+message+"</b></font>")  
  74. #不想该应用存在一个标题条,所有设置label窗口flags为splash screen(闪屏)  
  75. #设置屏幕标记为闪屏(Qt.SplashScreen),闪屏不存在标题条(title bar)  
  76. messageLabel.setWindowFlags(Qt.SplashScreen)  
  77. ''''' 
  78. 由于是在用户窗口创建的label, 
  79. 所有需要使用show()方法来显示label 
  80. 此时label窗口未显示。 
  81. 对show()的调用只是安排一个“paint event(绘画事假)”, 
  82. 它向QApplication对象的事件队列添加一个新事件, 
  83. 该事件是一个绘制指定的小部件(widget)的请求。 
  84. '''  
  85. messageLabel.show()  
  86. ''''' 
  87. Python库的time.sleep()功能需要几秒钟, 
  88. QTimer.singleShot()函数需要一个毫秒数。 
  89. 给singleShot()方法两个参数:距离超时的时长、超时之后调用的方法。 
  90. 超时之后调用的方法在PyQt中被称作"slot(插槽)"。 
  91. 尽管PyQt文档中条款称做"Python slot(python插槽)", 
  92. "Qt slot"用来区分Python的__slots__。 
  93. Python的__slots__是Python语言引用的一种新的风格类型。 
  94. '''  
  95. #设置距离超时的时长为一分钟  
  96. #超时之后调用quit方法  
  97. #quit方法用于清理GUI应用终端的方法  
  98. #它关闭任何打开的窗口并释放占用的任何资源,然后退出。  
  99. QTimer.singleShot(60000, app.quit)  
  100. #调用该方法关闭QApplication对象事件循环。  
  101. app.exec_()  
  102.       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值