如何解决tkinter文本小部件中的列宽是否可变?
我正在尝试在tkinter Text
框中显示帐单,但无法使所有列(如名称,价格等)对齐。是因为有些字母比其他字母宽吗?
ct=5.0
for i in lst_bill:
txt_bill.insert(ct,'\n' + str(int(ct-4))) # for sl.no
txt_bill.insert(tk.END,' '*11+i[0])
txt_bill.insert(tk.END,' '*(40-len(i[0]))+str(i[1]))
txt_bill.insert(tk.END,' '*(10-len(str(i[1]))) +i[2])
ct+=1
lst_bill
看起来像这样:
[['Orange Cake',20,'milk'],['Red Velvet Cake',30,'None'],['BlackCoffee',5,['Pumpkin Pie',10,'Milk']]
解决方法
是的,这是因为您使用的是宽度可变的字体。
您可以使用制表位,而不用空格填充数据。例如,要设置制表符停在50像素,200像素然后是250像素,并且第三列右对齐,您可以这样操作:
txt_bill.configure(tabs="50 200 right 250")
ct=5.0
for i in lst_bill:
txt_bill.insert("end",f"{int(ct-4)}\t{i[0]}\t{i[1]}\t{i[2]}\n")
ct += 1
您可能希望根据字体和每一列中数据的最大宽度来计算宽度,但这给出了基本思路。
tcl/tk documentation中的文本小部件是有关如何定义制表符的规范描述。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。