PySide6.QtCore.QEventLoop¶
- class QEventLoop¶
QEventLoop
类提供了进入和离开事件循环的方法。更多…概要¶
方法¶
def
__init__()
def
exec()
def
exec_()
def
isRunning()
def
processEvents()
def
wakeUp()
插槽¶
注意
本文档可能包含从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
如果没有待处理的事件,则等待事件。
另请参阅
使用给定的
parent
构造一个事件循环对象。- exec([flags=QEventLoop.ProcessEventsFlag.AllEvents])¶
- Parameters:
flags –
ProcessEventsFlag
的组合- Return type:
整数
进入主事件循环并等待直到调用
exit()
。返回传递给exit()
的值。如果指定了
flags
,则只会处理由flags
允许的类型的事件。需要调用此函数以启动事件处理。主事件循环从窗口系统接收事件并将这些事件分派给应用程序小部件。
一般来说,在调用exec()之前不能进行用户交互。作为一种特殊情况,像QMessageBox这样的模态小部件可以在调用exec()之前使用,因为模态小部件使用它们自己的本地事件循环。
为了使您的应用程序执行空闲处理(即在没有挂起事件时执行特殊函数),请使用超时为0纳秒的
QChronoTimer
。更复杂的空闲处理方案可以通过使用processEvents()
来实现。另请参阅
- exec_([flags=QEventLoop.AllEvents])¶
- Parameters:
flags –
ProcessEventsFlag
的组合- Return type:
整数
- exit([returnCode=0])¶
- Parameters:
returnCode – int
告诉事件循环以返回代码退出。
调用此函数后,事件循环从对
exec()
的调用中返回。exec()
函数返回returnCode
。按照惯例,
returnCode
为 0 表示成功,任何非零值表示错误。请注意,与同名的C库函数不同,此函数确实会返回到调用者——停止的是事件处理。
- isRunning()¶
- Return type:
布尔
如果事件循环正在运行,则返回
true
;否则返回false。事件循环被认为是从调用exec()
开始直到调用exit()
为止。- processEvents([flags=QEventLoop.ProcessEventsFlag.AllEvents])¶
- Parameters:
flags –
ProcessEventsFlag
的组合- Return type:
布尔
处理一些与
flags
匹配的待处理事件。如果处理了待处理事件,则返回true
;否则返回false
。如果您有一个长时间运行的操作,并且希望在不允许用户输入的情况下显示其进度,则此函数特别有用;即通过使用
ExcludeUserInputEvents
标志。这个函数只是
processEvents()
的一个包装器。有关详细信息,请参阅该函数的文档。- processEvents(flags, deadline)
- Parameters:
flags –
ProcessEventsFlag
的组合deadline –
QDeadlineTimer
处理与
flags
匹配的待处理事件,直到deadline
到期,或者直到没有更多事件需要处理,以先发生者为准。如果您有一个长时间运行的操作,并且希望在不允许用户输入的情况下显示其进度,即通过使用ExcludeUserInputEvents
标志,此函数特别有用。备注:
此函数不会连续处理事件;它在所有可用事件处理完毕后返回。
指定
WaitForMoreEvents
标志没有意义,将被忽略。
- processEvents(flags, maximumTime)
- Parameters:
flags –
ProcessEventsFlag
的组合maximumTime – int
这是一个重载函数。
处理与
flags
匹配的待处理事件,最多持续maxTime
毫秒,或者直到没有更多事件需要处理,以较短者为准。等同于调用:
processEvents(flags, QDeadlineTimer(maxTime));
- quit()¶
告诉事件循环正常退出。
与 exit(0) 相同。
- wakeUp()¶
唤醒事件循环。
另请参阅