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

标签 python qt format qtextedit

我想在 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 获得我想要的东西?或者我应该使用另一个显示小部件(不需要编辑,标签就可以,但我喜欢文本编辑的外观)?

最佳答案

我使用的默认字体没有固定宽度,因此不对齐。将字体设置为固定宽度字体(例如“等宽字体”)解决了我的问题:

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

我使用“setStyleHint”来指示如果系统上未找到“等宽”,Qt 应使用哪种字体,“QFont.TypeWriter”指示选择固定间距字体,以便仍然遵守对齐方式。

关于python - 使用 Python 中 QTextEdit 中的格式对齐文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37721194/

相关文章:

python - 如何优化数字排列以提高效率

c++ - 奇怪的 QT Unsigned Int 错误

excel - 如何在Excel VBA中将日期格式更改为数字?

visual-studio-2012 - 在 Visual Studio 2012 中格式化 SQL 脚本

python - OpenCV的dilate与scipy、matlab不同

python - 转换 osmnx 投影 map 的经纬度坐标

python - 如何在 QScintilla 小部件内的特定位置显示对话框?

python - 如何更改 QTreeView 中特定分支的颜色?

c++ - 删除 QTemporaryFile 时崩溃

c - 为什么代码片段 printf 的输出是 ("%. %. %. ");变成%.0 %.0 %.0?