Выровнять выходные цифры в текстовом виджете tkinter - PullRequest
1 голос
/ 31 мая 2019

Я учусь использовать tkinter для разработки приложения, которое в конце расчета составляет окончательный отчет, помещая числа в столбцы.

from tkinter import *

a = 5
b = 0.223
c = 0.1
a1 = 0.55556
b1 = 1.57
c1 = 785869
a2 = 785698
b2 = 0.55875968547854
c2 = 8696

root=Tk()
output_text = Text(root, width=200, height=30)
output_text.grid(row=10,column=10)
output_text.insert("end-1c", str(a) + ' ' + str(b) + ' ' + str(c)+'\n')
output_text.insert("end-1c", str(a1) + ' ' + str(b1) + ' ' +str(c1)+'\n')
output_text.insert("end-1c", str(a2) + ' ' + str(b2) + ' ' +str(c2)+'\n')

root.mainloop()

Я хочу выровнять числа в каждом столбце, потому что каждая строка имеет разное количество цифр, поэтому вывод не очень хорошо организован. Как я могу получить этот результат? Спасибо!

1 Ответ

1 голос
/ 31 мая 2019

Способ сделать это - способ, который мы использовали для пишущих машинок: создавать и использовать табуляторы, которые специально предназначены для того, чтобы вы могли выстраивать данные в столбцы.

В следующем примере каждый табулятор устанавливается200 пикселей:

output_text.configure(tabs=["200"])
...
output_text.insert("end-1c", str(a) + '\t' + str(b) + '\t' + str(c)+'\n')
output_text.insert("end-1c", str(a1) + '\t' + str(b1) + '\t' +str(c1)+'\n')
output_text.insert("end-1c", str(a2) + '\t' + str(b2) + '\t' +str(c2)+'\n')

Вы можете указать выравнивание вкладок, указав одно из следующих значений после ширины вкладки: "left", "right", "center" или "numeric"."numeric" означает, что десятичная точка будет помещена на табуляцию.

output_text.configure(tabs=["200", "numeric"])

Каноническое определение опции табуляции см. В документации по tcl / tk здесь: http://tcl.tk/man/tcl8.5/TkCmd/text.htm#M-tabs

примечание: документация по python для tkinter дает хороший обзор того, как перевести документацию по tcl / tk в python, в разделе под названием Tkinter life Preserver

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...