2016-06-09 4 views
1

Я хочу отобразить текст в QTextEdit. Я использую функцию format(), чтобы выровнять текст и сделать его похожим на чистую таблицу. Хотя я получаю прекрасный результат при отображении текста в оболочке, текст, похоже, не выравнивается в QTextEdit, например, если ширина символа меняется. В основном я вижу разницу, когда присутствует символ «-».Выравнивание текста с использованием формата в QTextEdit в Python

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

Результат, как ожидалось, в оболочке. Но с 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

Хороший вопрос. Я не указывал какой-либо конкретный шрифт, поэтому я предполагаю, что он по умолчанию. Я попытался установить шрифт «monospace», и теперь расстояние хорошее! Я нахожусь в Windows, но обязательно буду использовать свою программу на Mac, поэтому я пытаюсь использовать функцию systemFont для получения шрифта фиксированной ширины по умолчанию, но не может заставить его работать. Я использую PySide версии 1.2.4 – Enaid

ответ

2

Я использовал шрифт по умолчанию, который не имеет фиксированной ширины, следовательно, не выравнивается. Установка шрифта фиксированной ширины шрифта, как «MonoSpace» решить мою проблему:

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

Я использовал «setStyleHint», чтобы указать, какой тип шрифта Qt следует использовать, если «моноширинный» не найден в системе, «QFont .TypeWriter ", указывающий на выбор шрифта с фиксированным шагом, чтобы выравнивание по-прежнему соблюдалось.

+0

Спасибо за сообщение решения :) –