我有一个QTextEdit
,其中我想设置一些由ASCII Art文本渲染器生成的文本(unicode)。除了QTextEdit
扭曲文本外,一切正常。屏幕截图显示QTextEdit
通过setText()
设置的同一个unicode文本变量,并记录到控制台,正确显示。
如果我使用QTextEdit
或QPlainTextEdit
,或者我通过setText(ascii_art_text)
或setPlainText(ascii_art_text)
设置文字,则无关紧要。我在这里使用PySide,但我怀疑在这种情况下并不太感兴趣。
如何修复失真?
答案 0 :(得分:5)
从您的示例的外观来看,您的QTextEdit
似乎没有使用等宽字体,这是终端和文本编辑器通常使用的字体。使用等宽字体创建QFont。如,
# Specific Windows monospaced font.
font = QFont("Courier New")
根据Torsten Marek在answer中的How to specify monospace fonts for cross platform Qt applications?,您可以获得跨平台等宽字体:
font = QFont("Monospace")
font.setStyleHint(QFont.TypeWriter)
确定字体后,请将其分配到QTextEdit
:
text_edit.setCurrentFont(font)