程序模块Python Rapid GUI Programming 第一篇。 25行写一个奇葩的闹钟。Python 基础教程 程序模块sohu - 超凡娱乐

程序模块Python Rapid GUI Programming 第一篇。 25行写一个奇葩的闹钟。Python 基础教程 程序模块sohu

2019-02-12 09:44:24 | 作者: 鸿骞 | 标签: 程序,模块,闹钟 | 浏览: 2014

这两天一直在研讨程序模块之类的问题,天今正好有时机和咱们同享一下.

    天今咱们开个小差不看 《爱可的Python》。

    荐推一本书 《Rapid GUI Programming with Python and Qt 》 网上英文版下载一大堆,咱们能够自己去找。

    天今咱们讲一下面里第一个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]" # 24hr clock

其间包含了反常处理,关于一个应用程序,咱们应当将悉数的反常情况都虑考进去。

    程序顶用使raise 来触发反常。迫使程序进入咱们的想预轨迹。

    显着,面上的程序是不足的,它并没有韶光判别和GUI分部。

    怎么判别韶光是不是到了呢,咱们给出一个不是特别准确的办法,时定判别。

import time
while QTime.currentTime() due:
 time.sleep(20) # 20 seconds

当韶光到了咱们就会跳到下一步,创建一个窗体,拖延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)
 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_()

文章完毕给咱们共享下程序员的一些笑话语录: AdobeFlash拖垮Windows拖垮IE!又拖垮Linux拖垮Ubuntu拖垮FirxEox!还拖垮BSD拖垮MacOS拖垮Safri!几乎无所不拖!AdobeFlash滚出网路国际!不要认为市占有率高就能够继续出烂货产品!今后替代品多得是!

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表超凡娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章