在 QPlainTextEdit (PyQt5) 中实现 python 自动缩进

问题描述 投票:0回答:2

我正在寻求实现这样的事情:

但我不知道从哪里开始,现在我的文本编辑器有语法突出显示和行号,所以下一步是添加自动缩进。 我该如何添加它?有例子吗? 我现在代码的主要部分可以在这里找到:

https://github.com/Fuchsiaff/pypad/blob/master/src/main.py

python-3.x pyqt5
2个回答
6
投票

这需要大量的改进,但应该可以给你一个想法。您基本上只想检查最后一行的结尾,以确定是否需要缩进,然后将其插入文本编辑中。

    self.text_edit = QtWidgets.QTextEdit()
    self.text_edit.textChanged.connect(self.add_indent)

def add_indent(self):
    if self.text_edit.toPlainText().endswith(':\n'):
        self.text_edit.insertPlainText('    ')

0
投票

将此函数连接到 textChanged 应该会有所帮助。

class something(QPlainTextEdit):
    self.indenter = 0
    def textchanged(self):
        self.highlighter.highlightBlock(self.toPlainText())
        pos = self.getPosition()
        try:current = self.toPlainText()[pos - 1]
        except:return
        if self.indenter and current == "\n":
            for i in range(self.indenter):
                self.insertPlainText("\t")
        if current == "{":
            self.indenter += 1
        elif current == "}":
            self.indenter -= 1
© www.soinside.com 2019 - 2024. All rights reserved.