我正在使用tkinter中的GUI,当我尝试使用.get()属性从我的文本条目中获取值时,我遇到了麻烦。我的GUI有一个按钮,可以为用户添加新的输入框,以便提供更多信息,您可以从下面的代码段看到:
count = 1
a=[]
b=[]
c=[]
def add_line():
global count,a,b,c,entrya
count += 1
Label(disframe, text="Well").grid(row=count,column=1)
entrya=Entry(disframe,width=3).grid(row=count,column=2)
Label(disframe, text="through").grid(row=count,column=3)
entryb=Entry(disframe,width=3).grid(row=count,column=4)
entryc=Entry(disframe,width=4).grid(row=count,column=5,padx=3)
a.append(entrya)
b.append(entryb)
c.append(entryc)
def get_entries():
for x in a:
a[x]=entrya.get()
print a
Button(root,text="Add more wells",command=add_line).grid(row=1,column=6,sticky=N)
Button(root,text="Get entry values",command=get_entries).grid(row=2,column=6,sticky=N)
我为混乱道歉。我的代码就像我设计的东西:功能优先。
因此,如果用户想要另外一组三个条目,他/她将单击该按钮以显示它们。现在我遇到了具有相同变量名的多个条目的问题。我试图将它们放入阵列,但这并没有成功。我认为解决方案可能是一个stringvar数组,但我不确定如何实现该解决方案。有什么建议或问题吗?
答案 0 :(得分:0)
执行此操作时:
x=foo().bar()
x
会有bar()
次返回。
因此,当你这样做时:
entrya=Entry(disframe,width=3).grid(row=count,column=2)
...然后entrya
的值为grid(...)
。此结果始终为None
。
如果要使用窗口小部件构造函数返回的对象,则需要使用两个步骤。首先,创建对象并保存引用,然后调用grid:
entrya=Entry(disframe,width=3)
entrya.grid(row=count,column=2)
有了这个,使用数组的解决方案应该可以正常工作。
答案 1 :(得分:-1)
仅使用Entry
values_a = []
entries_a = []
def add_line():
global entries_a
ent = Entry(...)
ent.grid(...)
entries_a.append( ent )
def get_entries():
for x in entries_a:
print x.get()
# OR
def get_entries():
global values_a
values_a = []
for x in entries_a:
values_a.append( x.get() )
print values_a
BTW:使用
entrya = Entry(...).grid(...)
您从[{1}}分配entrya
结果,但grid(...)
始终返回grid()
。
使用
None
使用entrya = Entry(...)
entrya.grid(...)
StringVar