簡體   English   中英

使用 Python 中 QTextEdit 中的格式對齊文本

[英]Aligning text using format in a QTextEdit in Python

我想在 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)

此 QTextEdit 中的文本對齊方式不正確

我嘗試使用 QPlainTextEdit 並得到相同的結果。 無論如何用 QTextEdit/QPlainTextEdit 得到我想要的東西? 或者我應該使用另一個顯示小部件(不需要編輯,標簽可以,但我喜歡文本編輯的外觀)?

我使用的是沒有固定寬度的默認字體,因此沒有對齊。 將字體設置為固定寬度的字體,如“等寬”解決了我的問題:

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

我使用“setStyleHint”來指示如果在系統上找不到“等寬”,Qt應該使用哪種字體,“QFont.TypeWriter”指示選擇固定間距字體,以便仍然尊重對齊方式。

通過使用 Unicode 間距和 python 格式對齊文本或浮點數,我得到了很好的結果。

示例:

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 視圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM