首页 文章

使用Python中的QTextEdit中的格式对齐文本

提问于
浏览
1

我想在QTextEdit中显示文本 . 我使用format()函数来对齐文本,使其看起来像一个干净的表 . 虽然在shell中显示文本时得到了完美的结果,但文本似乎没有在QTextEdit中对齐,就像字符的宽度不同一样 . 我主要看到字符“ - ”出现时的区别 .

>>> first_line = "{:<10} {:<3} - {:<20}".format("1234", "EUR", "Mrs Smith")
>>> second_line = "{:<10} {:<3} - {:<20}".format("-45.62", "GBP", "M Doe")
>>> print first_line, "\n", second_line
1234       EUR - Mrs Smith
-45.62     GBP - M Doe

shell中预期的结果 . 但是使用QTextEdit时,对齐方式不正确,因为您可以看到“EUR”和“GBP”之间的细微差别 . 在这个例子中并不多,但是当我使用更多的线条时,它看起来并不合适 .

my_text_edit = QTextEdit()
my_text_edit.append(first_line)
my_text_edit.append(second_line)

the alignment of the text is not right in this QTextEdit

我尝试使用QPlainTextEdit并获得相同的结果 . 无论如何用QTextEdit / QPlainTextEdit来获得我想要的东西?或者我应该使用另一个显示小部件(不需要编辑,标签可以,但我喜欢文本编辑的外观)?

1 回答

  • 2

    我使用的是没有固定宽度的默认字体,因此不对齐 . 将字体设置为固定宽度字体,如'monospace'解决了我的问题:

    fixed_font = QFont("monospace")
    fixed_font.setStyleHint(QFont.TypeWriter)
    my_text_edit.setFont(fixed_font)
    

    我使用“setStyleHint”来指示在系统中找不到“monospace”时应使用哪种字体Qt,“QFont.TypeWriter”表示选择固定间距字体以便仍然遵守对齐 .

相关问题