gpt4 book ai didi

python - QLineEdit 上的 QCompleter 用于部分插入的文本

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:47 24 4
gpt4 key购买 nike

我制作了一个 QLineEdit 来读取中缀数学表达式。运算符仅限于 +-*/ 和方括号。值可以是数字或表示数值的变量名。我想自动完成变量名。

问题是显然简单的 QComplete 只适用于单个预定义的单词/短语。它们在其他词之间不起作用(正如您在修改表达式时可能期望的那样)。

我尝试阅读 Tree Model Completer,但由于我是用 Python 编程,所以这对我帮助不大。有谁知道用 python 编写的简单树模型完成器示例?

最佳答案

读完 ekhumoros comment我决定为自定义完成器制作一个简短示例。

例子如下:

from PySide import QtGui

class CustomCompleter(QtGui.QCompleter):

def __init__(self):
super().__init__()

def splitPath(self, path):
if path.endswith('ha'):
self.setModel(QtGui.QStringListModel([path + 'llo']))
return [path]

app = QtGui.QApplication([])

e = QtGui.QLineEdit()
c = CustomCompleter()
e.setCompleter(c)
e.show()

app.exec_()

每次文本以“ha”结尾时,它都会建议以“llo”继续。它看起来像:

enter image description here

所有工作都在 QCompletersplitPath(path) 中完成,每次我更改编辑字段的文本时都会调用两次(?)。在对文本进行一些处理之后,应该使用包含一个或多个建议的简单字符串列表来设置新模型。似乎每次都必须重新设置模型。另见 QCompleter Custom Completion Rules .

这还不是完整的公式解析和变量名完成,但是朝着这个方向迈出了合理的一步。它只是解释了如何使用 QCompleter 来实现该目标。总结一下:子类 QCompleter 并将所有自定义逻辑放入 splitpath()

关于python - QLineEdit 上的 QCompleter 用于部分插入的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28068943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com