QLineEdit上QLineEdit上的QCompleter,用于插入的tex的部分

2024-05-16 07:39:49 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我试着阅读Tree Model Completer,但是由于我是用Python编程的,这对我没有太大帮助。有人知道用python编写的一个简单的树模型完成器示例吗?在


Tags: 模型treemodel表达式编程运算符数学单词
1条回答
网友
1楼 · 发布于 2024-05-16 07:39:49

在阅读了ekhurtoscomment之后,我决定为一个自定义完成符创建一个简短的示例。在

示例如下:

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()。在

相关问题 更多 >