下面是一个使用PySide的简单gui计时器:
#!/usr/bin/env python3
import sys
from PySide.QtCore import *
from PySide.QtGui import *
import time
app = QApplication(sys.argv)
try:
message = """
<pre>
Alert! Alert! Alert!
Alert! Alert! Alert!
Alert! Alert! Alert!
Alert! Alert! Alert!
Alert! Alert! Alert!
Alert! Alert! Alert!
</pre>
"""
now = QTime.currentTime()
due = now.addSecs(2)
if not due.isValid():
raise ValueError
dueMs = now.msecsTo(due)
except:
pass
label = QLabel("<b>" + message + "</b>")
label.setWindowFlags(Qt.SplashScreen)
QTimer.singleShot(dueMs, label.show)
QTimer.singleShot(3000, app.quit)
app.exec_()
下面是另一个同样有效的版本:
^{pr2}$不同的是第二个版本使用时间。睡觉而第一个版本使用单发QTimer为了时机。他们中的一个比另一个好吗?如果是,为什么?在
回答:很难说什么是对是错。我的意见,在你的申请中使用。在
比方说,在这种情况下:“在启动之前加载数据”
你必须将大量数据加载到主应用程序中。完成装载需要很长时间。关键是在开始之前就已经完成了加载。所以在你的
second version
中使用它应该很好。但如果您不等待这个延迟,您应该创建线程来加载数据并触发标签,直到加载完成。与first version
(请参阅is工作方式与QThread相同)。在其他情况下:“在应用程序中保存数据”
你必须把主应用程序中的大量数据保存到文件中。写这个文件需要时间。如果您使用
first version
。当用户试图保存时,应用程序开始保存文件。在保存完成之前,你的应用程序不能做任何事情(比如Ubuntu中的黑色透明屏幕、挂起或冻结)。但如果使用second version
,则必须处理何时开始保存、何时取消以及何时完成保存文件。很难,但很好的应用程序响应用户。在相关问题 更多 >
编程相关推荐