class QEventLoop#

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

Inheritance diagram of 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。注意,事件不会被丢弃;它们将在没有 ExcludeUserInputEvents 标志的情况下,在下一次调用 processEvents() 时再次传递。

QEventLoop.ExcludeSocketNotifiers

不处理套接字通知事件。注意,事件不会被丢弃;它们将在没有 ExcludeSocketNotifiers 标志的情况下,在下一次调用 processEvents() 时再次传递。

QEventLoop.WaitForMoreEvents

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

另请参阅

processEvents()

__init__([parent=None])#
参数:

parentQObject

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

exec([flags=QEventLoop.ProcessEventsFlag.AllEvents])#
参数:

flagsProcessEventsFlag 的组合

返回类型:

int

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

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

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

一般来说,在调用exec()之前不会发生用户交互。作为一个特例,模态小部件(例如QMessageBox)可以在调用exec()之前使用,因为模态小部件使用自己的局部事件循环。

要使您的应用程序执行空闲处理(即在无挂起事件时执行特殊函数),请使用超时为0的QTimer。更复杂的中断处理方案可以使用processEvents()实现。

exec_([flags=QEventLoop.AllEvents])#
参数:

flagsProcessEventsFlag 的组合

返回类型:

int

exit([returnCode=0])#
参数:

returnCode – int

告诉事件循环退出时使用一个返回码。

在此函数被调用后,事件循环从exec()的调用运�回。函数exec()返回returnCode

通常情况下,返回码为0表示成功,任何非零值表示错误。

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

另请参阅

quit() quit() exec()

isRunning()#
返回类型:

bool

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

另请参阅

exec() exit()

processEvents([flags=QEventLoop.ProcessEventsFlag.AllEvents])#
参数:

flagsProcessEventsFlag 的组合

返回类型:

bool

处理符合 flags 的某些挂起事件。如果处理了挂起事件,则返回 true;否则返回 false

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

此函数是 processEvents() 的包装函数。有关该函数的详细信息,请参阅其文档。

processEvents(flags, deadline)
参数:

处理符合 flags 的挂起事件,直到 deadline 到期,或者没有更多事件要处理,以较早者为准。此函数特别有用,如果您有一个运行时间较长的操作,并且希望在允许用户输入的情况下显示其进度,例如,使用 ExcludeUserInputEvents 标志。

备注

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

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

processEvents(flags, maximumTime)
参数:

这是一个重载函数。

处理匹配 flags 的挂起事件,最长为 maxTime 毫秒,或者直到没有更多事件要处理,以较短者为准。

相当于调用

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

告诉事件循环正常退出。

等同于 exit(0)。

另请参阅

quit() exit()

wakeUp()#

唤醒事件循环。

另请参阅

wakeUp()