在条目复制后从多个条目中获取值

时间:2014-07-16 17:24:59

标签: python-2.7 tkinter widget

我正在使用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数组,但我不确定如何实现该解决方案。有什么建议或问题吗?

2 个答案:

答案 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