我想在列表框中显示一些项目。有些非常短,有些非常大(10-15个字符)。如下所示,
1. facebook gowtham95****@gmail.com
2. gmail someone@gmail.com
3. stackoverflow stackusername
我想整齐地展示它们......
1. facebook gowtham95****@gmail.com
2. gmail someone@gmail.com
3. stack.. stackusername
无论如何要在Tkinter中的列表框中修复列宽?
还有一件事,我想在上面标注为id,domain和username。我不想使用标签。我想在列表框中提及它,无论如何还有吗?
答案 0 :(得分:1)
您可以使用string formating - 但它需要一些monospaced font,您必须在列中找到最长的字符串。
import Tkinter as tk
master = tk.Tk()
master.geometry('600x100')
lb = tk.Listbox(master, font='monospace') # some monospaced font
lb.pack(fill=tk.BOTH, expand=1)
#---
data = [
('1', 'facebook', 'gowtham95****@gmail.com'),
('2', 'gmail', 'someone@gmail.com'),
('3', 'stackoverflow', 'stackusername')
]
longest_1 = max( len(x[1]) for x in data )
longest_2 = max( len(x[2]) for x in data )
for x in data:
line = '%s | %*s | %*s |' % (x[0], -longest_1, x[1], -longest_2, x[2])
lb.insert(tk.END, line)
#---
tk.mainloop()