如何初始化 QTextEdit 查找选项

How to initialise QTextEdit find options

我正在尝试在以下调用中设置选项:

bool QTextEdit::find(const QString &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags())

但是 option 的签名对于 Python 程序员来说很复杂。我尝试了以下方法:

option = 0
option = option | QTextDocument.FindBackward
# continue to check other checkboxes and build up the option this way

很遗憾,错误是'int'出乎意料。我知道自 option=0 以来,以下 OR 操作可能也不会产生 int 类型。但是如何获得正确的起始 null/unset/zero 值?

如果你有默认值让这个参数空着:

doc = QTextDocument()
doc.find("aaa")

如果您想使用标志,请不要从文档中读取值,而是使用

QTextDocument.FindBackward
QTextDocument.FindCaseSensitively
QTextDocument.FindWholeWords

如果您想拥有或使用 | 运算符:

QTextDocument.FindWholeWords |  QTextDocument.FindBackward

如果函数签名中有默认值,则不需要提供此参数。

该错误是由PyQt 中偶尔出现的一个小错误引起的。如果您更新到最新版本,错误可能会消失。但是,如果您无法更新,或者如果您想要针对此问题对代码进行防弹,解决方法是像这样初始化变量:

>>> option = QTextDocument.FindFlag(0)
>>> option = option | QTextDocument.FindBackward

现在这将保证 option 具有预期的类型。可以通过显式检查枚举值之一的类型来找到要使用的正确标志:

>>> print(type(QTextDocument.FindBackward))
<class 'PyQt5.QtGui.QTextDocument.FindFlag'>

或者您可以在文档中查找相关枚举:QTextDocument