我需要将列表项分成列。唯一的问题是我不知道列表中创建的项目数量(我使用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()
答案 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
。