尾随空格不改变颜色qtextedit

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

有了 QTextEdit,我想插入一个带有背景颜色的字符串。但这样做时,末尾的空格不会改变颜色。虽然我能够创建一个 mcve,但事实证明重写代码可以解决问题。

接下来是 mcve:

from PySide2 import QtWidgets, QtGui, QtCore

class Terminal(QtWidgets.QTextEdit):
    def __init__(self, handler, width=80, height=30):
        super().__init__()

        self.setStyleSheet("Terminal {background-color: black;"
                                     "color: white;"
                                     "font: 10pt Consolas}")
        self.setTextInteractionFlags(QtCore.Qt.NoTextInteraction)

        self.setPlainText("\n".join([" " * width] * height))
        
        self._width = width
        self._cursor = self.textCursor()

        self._handler = handler(self)
        next(self._handler)

    def say(self, row, col, text, **kwargs):
        format = QtGui.QTextCharFormat()
        
        for key, value in kwargs.items():
            getattr(format, f"set{key}")(value)

        start = row * (self._width + 1) + col

        self._cursor.setPosition(start)
        self._cursor.setPosition(start + len(text), QtGui.QTextCursor.KeepAnchor)

        self._cursor.insertText(text, format)

app = QtWidgets.QApplication([])

@Terminal
def widget(win):
    win.say(0, 0, "hello  ", Background=QtGui.QColor("red"))
    yield

widget.show()

app.exec_()

我可能做错了什么?

编辑:当窗口最大化时,空间是彩色的。我会看看这是什么原因。

python pyside2
1个回答
0
投票

我发现问题了!事实证明,QTextEdit 自动添加了换行符,以便文本进入小部件。

因此,我只能通过:

self.setLineWrapMode(QtWidgets.QTextEdit.NoWrap)
© www.soinside.com 2019 - 2024. All rights reserved.