首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tkinter文本小部件中的列宽是可变的吗?

tkinter文本小部件中的列宽是可变的吗?
EN

Stack Overflow用户
提问于 2020-08-29 01:02:04
回答 1查看 62关注 0票数 0

我试图在tkinter Text框中显示账单,但无法获得所有列(如名称、价格等)。对齐。是不是因为有些字母比其他字母宽?

代码语言:javascript
复制
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看起来像这样:

代码语言:javascript
复制
[['Orange Cake', 20, 'milk'], ['Red Velvet Cake', 30, 'None'], 
 ['BlackCoffee', 5, 'None'], ['Pumpkin Pie', 10, 'Milk']]

Screenshot of current results

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-29 02:12:55

是的,这是因为您使用的是可变宽度字体。

您可以使用制表位而不是用空格填充数据。例如,要将制表位设置为50像素、200像素,然后是250像素,并且第三列右对齐,您可以这样做:

代码语言:javascript
复制
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中提供了对如何定义tabstop的规范描述。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63638116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档