Python Tkinter如何从存储在一个变量中的多个Entry小部件中获取输入

时间:2014-09-07 09:43:37

标签: python tkinter

我的代码如下。

from tkinter import *
def TakeInput():
    print(tb.get()) #This will print Entry1 input
    print(tb.get()) #This will print Entry2 input
tk=Tk()
#Entry 1
tb=Entry(tk) #Both Entry1 and Entry2 are stored in the same variable: tb
tb.pack()
#Entry 2
tb=Entry(tk) #Both Entry1 and Entry2 are stored in the same variable: tb
tb.pack()
#Button
b=Button(tk,text="PrintInput",command= TakeInput)
b.pack()
tk.mainloop()

我所要做的就是在将两者分配到同一个变量时同时显示条目1和条目2输入。

请注意,我是一名Python新手。

2 个答案:

答案 0 :(得分:2)

创建一个包含条目的列表并循环遍历它们。

def print_input(*args):
    for entry in entries:
        print(entry.get())

entries = [Entry(tk) for _ in range(2)]
for entry in entries:
    entry.pack()

btn = Button(tk, text="Print", command=print_input)

在您的版本中,您首先将tb分配给一个条目,然后分配给另一个条目。这不是如何将来自多个小部件的输入存储在一个变量中的方式。您只需覆盖对已创建和存储的第一个小部件的引用。

答案 1 :(得分:1)

如果要自动执行此操作,则必须在修改后控制条目小部件中的字符串。您可以使用StringVar执行此操作。你不需要一个按钮,当entry1的文本等于entry2的文本时,它会自动打印。

from tkinter import *

def TakeInput():
    print(tb1.get())
    print(tb2.get())

def on_entry1_changed(*args):
    if sv_entry1.get() == sv_entry2.get():
        TakeInput()

def on_entry2_changed(*args):
    if sv_entry1.get() == sv_entry2.get():
        TakeInput()
tk=Tk()

#Entry 1
sv_entry1 = StringVar()
sv_entry1.set("Entry1 text")
sv_entry1.trace("w", on_entry1_changed)

tb1=Entry(tk, textvariable=sv_entry1)
tb1.pack()

#Entry 2
sv_entry2 = StringVar()
sv_entry2.set("Entry2 text")
sv_entry2.trace("w", on_entry2_changed)

tb2=Entry(tk, textvariable=sv_entry2)
tb2.pack()

tk.mainloop()

如果你想按下按钮,你必须修改TakeInput函数,如下所示:

from tkinter import *
def TakeInput():
    if tb1.get() == tb2.get():
        print tb1.get()
tk=Tk()

#Entry 1
tb1=Entry(tk)
tb1.pack()

#Entry 2
tb2=Entry(tk)
tb2.pack()

#Button
b=Button(tk,text="PrintInput",command= TakeInput)
b.pack()
tk.mainloop()