【发布时间】:2015-01-21 13:54:21
【问题描述】:
我创建了一个QLineEdit 来阅读中缀数学表达式。运算符仅限于+-*/ 和方括号。值可以是数字或表示数值的变量名称。我想自动完成变量名。
问题在于看似简单的QComplete 仅适用于单个预定义的单词/短语。它们在其他词之间不起作用(正如您在修改表达式时可能期望的那样)。
我尝试阅读 Tree Model Completer,但由于我使用 Python 进行编程,这对我没有太大帮助。有人知道用 python 编码的简单树模型完成器示例吗?
【问题讨论】:
-
所以您想自动完成先前在表达式中输入但未预定义的变量名称?如果是这样,那么只需即时提取相关的变量名称,然后从中填充完成者。大多数高级文本编辑器都具有此功能:通常称为“从文档自动完成”等。
-
变量名已经定义好了。我只是在 PyQt 中寻找树模型完成器的示例代码。
-
@ekhumoro 这行不通,因为完成者检查了已经输入的整个文本,它不知道什么是变量名以及公式的其余部分是什么。
-
在这里使用树模型完成器对您没有多大帮助。您需要在任何给定点解析公式以找出当前变量名存根是什么,然后仅在该部分上调用某种 Completer 并完成它。
-
@Trilarion。我想我明白现在的困惑是什么了。当 OP 说
QCompleter时,它们实际上是指QLineEdit使用的标准完成机制。但是QCompleter类本身比这灵活得多。对于自定义自动完成器,有必要使用QCompleter.setWidget()并实现您自己的完成机制。但是,正如您所说,不需要树模型 - 只需简单的“从文档自动完成”即可。
标签: python qt pyqt qlineedit qcompleter