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

问题描述:

我想在QTextEdit中显示文本。我使用format()函数来对齐文本并使其看起来像一张干净的表格。尽管在shell中显示文本时我得到了一个完美的结果,但是文本看起来并没有在QTextEdit中对齐,就像字符宽度变化一样。我主要看到字符“ - ”出现时的区别。使用Python中的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?或者我应该使用另一个显示小部件(不需要编辑,标签可以,但我喜欢文本编辑的外观)?

+2

你在'QTextEdit'实例中使用了什么字体? – quamrana

+0

好问题。我没有指定任何特定的字体,所以我猜是默认的字体。我试图设置“等宽”字体,现在间距很好!我在Windows上,但一定会在Mac上使用我的程序,所以我试图使用systemFont函数来检索默认的固定宽度字体,但似乎无法使其工作。我正在使用PySide 1.2.4版本 – Enaid

我使用的是没有固定宽度的默认字体,因此没有对齐。字体设置为像“等宽”固定宽度的字体解决我的问题:

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

我用“setStyleHint”表示,如果“等宽”没有在系统上找到的是Qt应该使用哪一种字体,“QFont .TypeWriter“表示选择固定间距字体,因此对齐仍然受到尊重。

+0

感谢您发布解决方案:) –