2015-02-05 120 views
0
variables = [] 
entries = [] 
va = StringVar() #variable 
en = Entry(frame, textvariable=va) #entrybox 
en.grid(row=i+1, column=4) 
variables.insert(i,va) 
entries.insert(i,en) 

我想获得用户输入到列表中,我复制了这段代码,但我很困惑用户输入存储在哪个列表? 我的意图是生成一列输入框,并将用户输入写入列表。写tkinter条目输入列表

+0

因此,每个条目的内容将是一个列表中的值?像'contents = [entry1_value,entry2_value,entry3_value]'? – nbro 2015-02-05 14:54:18

回答

0

entries = []存储的是用户输入,因为entries.insert(i,en)其中enEntryi可能等于0

+1

“条目”与“用户输入”不同。前者是出现在GUI上的文本框,后者是该文本框内的字符串。 – Kevin 2015-02-05 14:53:16

+0

@Kevin是不是'textvariable = va'是文本框中的默认参数?我认为在输入框中有一个默认文本,然后每当用户输入时,将其插入到'entries'中 – GLHF 2015-02-05 14:53:55

0

首先,你不需要StringVar对象设置得到Entry对象的内容。 StringVar s主要用于与不同的小部件共享相同的值,我认为情况并非如此。

您可以做的是获取在Entry小部件中插入值。您可以通过指定指数(和)的条目插入一个字符串:

import tkinter as tk 

m = tk.Tk() 
e = tk.Entry(m) 
e.pack() 
e.insert(0, "Goodbye!") # index=0, string="Goodbye" 
m.mainloop() 

为了得到一个项的内容,这是更简单(以同样的例子):

import tkinter as tk 

m = tk.Tk() 
e = tk.Entry(m) 
e.pack() 
e.insert(0, "Goodbye!") 
b = tk.Button(m, text="Get Entry's content", 
       command=lambda: print(e.get())) # on click, the contents will be printed 
b.pack() 
m.mainloop() 

在你的情况,而不是具有lambda,您可以简单地正常功能在下列方式一键命令关联:

b = Button(command=get_entries_content) # note the absence of() 

然后你可以定义你的get_entries_content函数,它会得到你单个条目的内容,然后用它们来填充一个列表。

def get_entries_content(): 
    # get contents of Entries 
    # fill my list