Tkinter按钮不从函数返回值

时间:2019-02-28 21:29:13

标签: python pandas tkinter

我目前正在尝试为一个函数创建一个小的UI,该函数根据已输入的字符串从数据框中返回一些值。字符串被分割,并使用iloc在我的数据框中查找每个子字符串。问题是,使用Tkinter中的按钮调用此函数时,未返回任何内容。如果没有Tkinter,它可以正常工作,所以我不确定错误发生在哪里。

master = Tk()
e1 = Entry(master)

list_of_inputs = e1.get().split()

def show_entry_fields():
    i=0
    while (i<len(list_of_inputs)):
        return (backend.loc[backend['Keyword'] == list_of_inputs[i]]) 
        i=i+1

Label(master, text="Enter Title").grid(row=0)

e1.grid(row=0, column=1)

Button(master, text='Show', command=show_entry_fields).grid(row=0, column=2, sticky=W, pady=4)

mainloop( )

1 个答案:

答案 0 :(得分:0)

事物的结合:

  • 您正在检查条目的值,然后用户才有机会填写。只有在按下按钮时,才应该获得用户输入。
  • show_entry_fields()函数中的while循环将始终运行一次,而不管提供了多少输入,因为您在循环中放入了return语句
  • 您的处理函数必须修改现有的数据结构或图形组件,如果返回结果则无法收集

可能的实现:

master = Tk()
e1 = Entry(master)


def show_entry_fields():
    list_of_inputs = e1.get().split()
    result = []
    for entry in list_of_inputs:
        result.append(backend.loc[backend['Keyword']] == entry)
    # Alternatively, you can create the list with
    # result = [backend.loc[backend['Keyword']] == entry for entry in list_of_inputs]
    # Here, deal with the result    

Label(master, text="Enter Title").grid(row=0)
e1.grid(row=0, column=1)
Button(master, text='Show', command=show_entry_fields).grid(row=0, column=2, sticky=W, pady=4)
mainloop()