我想在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)
我尝试使用QPlainTextEdit并获得相同的结果。无论如何用QTextEdit / QPlainTextEdit得到我想要的东西?或者我应该使用另一个显示小部件(不需要编辑,标签可以,但我喜欢文本编辑的外观)?
答案 0 :(得分:3)
我使用的是没有固定宽度的默认字体,因此不对齐。将字体设置为固定宽度字体(如'monospace')解决了我的问题:
fixed_font = QFont("monospace")
fixed_font.setStyleHint(QFont.TypeWriter)
my_text_edit.setFont(fixed_font)
我使用“setStyleHint”来指示在系统中找不到“monospace”时应使用哪种字体Qt,“QFont.TypeWriter”表示选择固定间距字体以便仍然遵守对齐。
答案 1 :(得分:0)
通过使用python格式的Unicode间距对齐文本或浮动元素,我获得了不错的结果。
示例:
self.mlist.append('{:\u2000<11d}'.format(martnr)+\
'{:\u2000<40s}'.format(momschr)+'\n'+\
'{:\u2000>6d}'.format(int(maantal))+\
'{:\u2000>12.2f}'.format(mprijs)+\
'{:\u2000>12.2f}'.format(float(mprijs)*float(maantal))+\
'{:\u2000>12.2f}'.format(float(mprijs)*float(maantal)*mbtw))
self.view.append(self.mlist[-1])
其中self.view是QTextEdit视图