QTextEdit中的文本失真

tim*_*ner 1 pyside qtextedit python-unicode

我有一个QTextEdit我想要设置一些由ASCII Art文本渲染器生成的文本(unicode).一切都很好,除了QTextEdit扭曲文本.屏幕截图显示了在QTextEditvia中设置的相同unicode文本变量setText()并记录到控制台,在该控制台中正确显示.


QTextEdit扭曲文本


如果我使用QTextEditQPlainTextEdit,或者如果我通过setText(ascii_art_text)或设置文本似乎并不重要setPlainText(ascii_art_text).我在这里使用PySide,但我怀疑在这种情况下并不太感兴趣.


任何想法如何解决这种扭曲?

use*_*450 5

从您的示例的外观来看,您似乎QTextEdit没有使用等宽字体,这是终端和文本编辑器通常使用的字体.使用等宽字体创建QFont.例如,

# Specific Windows monospaced font.
font = QFont("Courier New")
Run Code Online (Sandbox Code Playgroud)

根据Torsten Marek 在如何为跨平台Qt应用程序指定等宽字体答案,您可以获得跨平台等宽字体:

font = QFont("Monospace")
font.setStyleHint(QFont.TypeWriter)
Run Code Online (Sandbox Code Playgroud)

确定字体后,将其分配给QTextEdit:

text_edit.setCurrentFont(font)
Run Code Online (Sandbox Code Playgroud)