使用单个标签调用将列表项分隔为列

时间:2014-02-06 00:20:41

标签: python python-2.7 tkinter

我需要将列表项分成列。唯一的问题是我不知道列表中创建的项目数量(我使用nltk'令牌化程序制作列表)。如何将第1项放入第1列,第2列中的第2项等。我已在下面简化了代码。现在将事物放入正确的列数,但只列出每列中列表中的最后一项。谢谢。

from Tkinter import * 
import ttk

root = Tk()
root.title("This space intentionally left blank")
root.minsize(800,200)
mainframe = ttk.Frame(root) 
mainframe.grid(column = 0, row = 0)

tokens = [0,1,2,3,4,5,6]
numtok = len(tokens)
tok = StringVar()
x=0
while x < numtok:
    tok.set(tokens[x])
    ttk.Label(mainframe, textvariable=tok).grid(column=x+1, row=2)
    x += 1

root.mainloop()

1 个答案:

答案 0 :(得分:0)

如果基础Labels发生变化,

设置为textvariable的Tkinter StringVar将始终更新其文字。

您正在创建一个StringVar,每个循环都会更新,导致所有标签都具有相同的文字。

请改为尝试:

from Tkinter import * 
import ttk

root = Tk()
root.title("This space intentionally left blank")
root.minsize(800,200)
mainframe = ttk.Frame(root) 
mainframe.grid(column = 0, row = 0)

tokens = [0,1,2,3,4,5,6]
tok_vars = []
for token in tokens:
    var = StringVar()
    var.set(token)
    tok_vars.append(var)

for ii,var in enumerate(tok_vars):
    ttk.Label(mainframe, textvariable=tok_vars[x]).grid(column=ii+1, row=2)

root.mainloop()

基本上只需为每个StringVar提供不同的Label