首页 > 解决方案 > 在 tkinter Text 小部件中对齐输出数字

问题描述

我正在学习使用 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()

我想对齐每一列中的数字,因为每一行都有不同的数字,所以输出组织得不好。我怎样才能得到这个结果?谢谢!

标签: pythontkinter

解决方案


执行此操作的方法是我们过去使用打字机执行此操作的方式:创建和使用制表位,这些制表位明确设计为允许您将数据按列排列。

以下示例每 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"])

有关 tabs 选项的规范定义,请参阅此处的 tcl/tk 文档:http: //tcl.tk/man/tcl8.5/TkCmd/text.htm#M-tabs

注意:python tkinter 文档在标题为Tkinter life Preserver的部分中很好地概述了如何将 tcl/tk 文档翻译成 python


推荐阅读