无法在 tkinter 中为多个条目小部件工作

get not working for multiple entry widget in tkinter

我需要从条目中获取 3 个值并将其作为参数传递给另一个函数以搜索输入的内容。但是我无法获得这些值。这是我的代码。

def read_files():
    input=entry1.get()
    with open(input, newline='') as csvfile:
        spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
        for line in spamreader:
            contents.append(line)

    entries = []
    val=["no","num2","date"]
    for i in range(3):
        label = Label(f2, text=val[i])
        label.grid(row=i, column=0)
        entry = Entry(f2, width=25)
        entry.grid(row=i, column=1)
        entries.append(entry.get())
    button1 = ttk.Button(f2, text="Search", command=search(**pass the get value here**))
    button1.grid(row=4, column=0)
    button2 = ttk.Button(f2, text="Quit")
    button2.grid(row=4, column=1)
    button2.bind ('<ButtonPress>', lambda e: exit())



main = Tk()
main.title("SEARCH")
main.grid()
#main.geometry('640x480')

frame1 = ttk.Frame(main, height=200, width=200)
frame1.grid()
f2 = Frame(main, height=300, width = 300)
f2.grid()
entry1 = Entry(frame1, width=30)
entry1.pack()

button1 = ttk.Button(frame1, text="File", command=read_files)
button1.pack()
#button1.bind ('<ButtonPress>', lambda e: progressbar.start())

button2 = ttk.Button(frame1, text="Quit")
button2.pack()
button2.bind ('<ButtonPress>', lambda e: exit())

frame2 = ttk.Frame(main, height=100, width=100)
frame2.grid()
listbox = Listbox(frame2, height=100, width=100)
listbox.pack(fill=BOTH, expand=YES)

这里有什么错误。以及如何从条目小部件中获取值

正如我在评论中告诉您的那样,您在创建 entry 后立即将 entry.get() 附加到 entries,因此此时 entry.get() returns 一个空字符串,因为用户还没有在 entry 中输入任何内容。因此,entries 是一个空字符串列表。

您需要保存对 Entry 小部件的引用(可能在列表中),然后为搜索按钮创建一个回调函数并等待调用 get() 直到进入该回调函数,就像在代码片段中一样以下

from Tkinter import *
import ttk

def search():
    for entry in entries:
        print entry.get()

f2 = Tk()
entries = []
val=["no","num2","date"]

for i in range(3):
    label = Label(f2, text=val[i])
    label.grid(row=i, column=0)
    entry = Entry(f2, width=25)
    entry.grid(row=i, column=1)
    entries.append(entry)

button1 = ttk.Button(f2, text="Search", command=search)
button1.grid(row=4, column=0)

f2.mainloop()