四次大战时间。睡觉在PySide编程中

2024-06-27 02:31:36 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是一个使用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为了时机。他们中的一个比另一个好吗?如果是,为什么?在


Tags: fromimport版本appmessagesysalertpre
1条回答
网友
1楼 · 发布于 2024-06-27 02:31:36

Is one of them to be preferred to the other? If so, why?

回答:很难说什么是对是错。我的意见,在你的申请中使用。在


比方说,在这种情况下:“在启动之前加载数据”

你必须将大量数据加载到主应用程序中。完成装载需要很长时间。关键是在开始之前就已经完成了加载。所以在你的second version中使用它应该很好。但如果您不等待这个延迟,您应该创建线程来加载数据并触发标签,直到加载完成。与first version(请参阅is工作方式与QThread相同)。在

其他情况下:“在应用程序中保存数据”

你必须把主应用程序中的大量数据保存到文件中。写这个文件需要时间。如果您使用first version。当用户试图保存时,应用程序开始保存文件。在保存完成之前,你的应用程序不能做任何事情(比如Ubuntu中的黑色透明屏幕、挂起或冻结)。但如果使用second version,则必须处理何时开始保存、何时取消以及何时完成保存文件。很难,但很好的应用程序响应用户。在

相关问题 更多 >