我正在尝试编写一个小程序,其中包含使用Python和Tkinter的标签和条目字段列表(请参阅下面的代码)。添加小部件没有问题。但是,当我想使用其中一个实例的方法(如其中一个Entry-fields上的Insert())时,我无法找到一种方法。
我的代码如下所示:
from Tkinter import *
import random
root = Tk()
attributes = {'Strength':10, 'Dexterity':10, 'Constitution':10, 'Intelligence':10, 'wisdom':10, 'charisma':10}
entries = []
labels = []
i = 0
for a in attributes:
labels.append(Label(root, text = a, justify = LEFT).grid(sticky = W))
entries.append(Entry(root).grid(column = 1, row = i))
i = i+1
root.mainloop()
我试过一个简单的
entries[i].insert("text to insert")
和
e = Entry
e = entries[i]
e.insert...
但它没有帮助。我已经看到了其他人试图在列表中使用对象的例子,看起来他们只是像我在第一次尝试中那样做。我错过了什么吗?
由于
答案 0 :(得分:4)
Entry(root).grid()
会返回NoneType
个对象,因此您在列表中存储的所有内容都是None
。您可以先创建Entry
窗口小部件,然后调用grid()
,然后将其附加到列表中。
from Tkinter import *
import random
root = Tk()
attributes = {'Strength':10, 'Dexterity':10, 'Constitution':10, 'Intelligence':10, 'wisdom':10, 'charisma':10}
entries = []
labels = []
for i,a in enumerate(attributes):
labels.append(Label(root, text = a, justify = LEFT).grid(sticky = W))
e = Entry(root)
e.grid(column=1, row=i)
entries.append(e)
entries[i].insert(INSERT,"text to insert")
root.mainloop()
答案 1 :(得分:1)
在我开始使用Python之前,我遇到了这个问题。我当时想,“为什么要用两条线创建一些东西并设置网格位置。我会把它全部放在一条线上。”有趣的故事,'。grid'返回None。所以我认为你实际上并没有在这里附加任何东西。