PySide6.QtCore.QEventLoop

class QEventLoop

QEventLoop 类提供了进入和离开事件循环的方法。更多

PySide6.QtCore.QEventLoop 的继承图

概要

方法

插槽

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

任何时候,你都可以创建一个QEventLoop对象并调用exec()来启动一个本地事件循环。在事件循环内部,调用exit()将强制exec()返回。

class ProcessEventsFlag

(继承自 enum.Flag) 此枚举控制由 processEvents() 函数处理的事件类型。

常量

描述

QEventLoop.AllEvents

所有事件。请注意,DeferredDelete 事件会被特殊处理。更多详情请参见 deleteLater()

QEventLoop.ExcludeUserInputEvents

不处理用户输入事件,例如ButtonPress和KeyPress。请注意,这些事件不会被丢弃;它们将在下次调用processEvents()时传递,且不带有ExcludeUserInputEvents标志。

QEventLoop.ExcludeSocketNotifiers

不处理套接字通知器事件。请注意,事件不会被丢弃;它们将在下次调用processEvents()时传递,且不带ExcludeSocketNotifiers标志。

QEventLoop.WaitForMoreEvents

如果没有待处理的事件,则等待事件。

另请参阅

processEvents()

__init__([parent=None])
Parameters:

父对象QObject

使用给定的parent构造一个事件循环对象。

exec([flags=QEventLoop.ProcessEventsFlag.AllEvents])
Parameters:

flagsProcessEventsFlag 的组合

Return type:

整数

进入主事件循环并等待直到调用exit()。返回传递给exit()的值。

如果指定了flags,则只会处理由flags允许的类型的事件。

需要调用此函数以启动事件处理。主事件循环从窗口系统接收事件并将这些事件分派给应用程序小部件。

一般来说,在调用exec()之前不能进行用户交互。作为一种特殊情况,像QMessageBox这样的模态小部件可以在调用exec()之前使用,因为模态小部件使用它们自己的本地事件循环。

为了使您的应用程序执行空闲处理(即在没有挂起事件时执行特殊函数),请使用超时为0纳秒的QChronoTimer。更复杂的空闲处理方案可以通过使用processEvents()来实现。

exec_([flags=QEventLoop.AllEvents])
Parameters:

flagsProcessEventsFlag 的组合

Return type:

整数

exit([returnCode=0])
Parameters:

returnCode – int

告诉事件循环以返回代码退出。

调用此函数后,事件循环从对exec()的调用中返回。exec()函数返回returnCode

按照惯例,returnCode 为 0 表示成功,任何非零值表示错误。

请注意,与同名的C库函数不同,此函数确实会返回到调用者——停止的是事件处理。

另请参阅

quit() quit() exec()

isRunning()
Return type:

布尔

如果事件循环正在运行,则返回true;否则返回false。事件循环被认为是从调用exec()开始直到调用exit()为止。

另请参阅

exec() exit()

processEvents([flags=QEventLoop.ProcessEventsFlag.AllEvents])
Parameters:

flagsProcessEventsFlag 的组合

Return type:

布尔

处理一些与flags匹配的待处理事件。如果处理了待处理事件,则返回true;否则返回false

如果您有一个长时间运行的操作,并且希望在不允许用户输入的情况下显示其进度,则此函数特别有用;即通过使用ExcludeUserInputEvents标志。

这个函数只是processEvents()的一个包装器。有关详细信息,请参阅该函数的文档。

processEvents(flags, deadline)
Parameters:

处理与flags匹配的待处理事件,直到deadline到期,或者直到没有更多事件需要处理,以先发生者为准。如果您有一个长时间运行的操作,并且希望在不允许用户输入的情况下显示其进度,即通过使用ExcludeUserInputEvents标志,此函数特别有用。

备注:

  • 此函数不会连续处理事件;它在所有可用事件处理完毕后返回。

  • 指定WaitForMoreEvents标志没有意义,将被忽略。

processEvents(flags, maximumTime)
Parameters:

这是一个重载函数。

处理与flags匹配的待处理事件,最多持续maxTime毫秒,或者直到没有更多事件需要处理,以较短者为准。

等同于调用:

processEvents(flags, QDeadlineTimer(maxTime));
quit()

告诉事件循环正常退出。

与 exit(0) 相同。

另请参阅

quit() exit()

wakeUp()

唤醒事件循环。

另请参阅

wakeUp()