将文本用户输入作为字符串传递给另一个函数

时间:2018-08-01 19:44:21

标签: python pandas tkinter

我有一个tkinter输入字段,用户可以在其中在GUI中输入文本...

manager_name_entry = tkinter.Entry()
manager_name_entry.grid(in_=tab1, row=0, column=0, sticky=tkinter.N, pady=10)
manager_name_entry.focus_set()

我还有一个获取此文本的功能...

def get_name(entry):
    name = entry.get()
    return name

我有一个按钮,它调用了一个名为“ build_main”的函数...

reports_btn1 = tkinter.Button(root, text="Reports", width=12, height=0, command= build_main)
reports_btn1.grid(in_=tab1, row=1, column=1, sticky=tkinter.S, padx=0, pady=0)

最后我有一个名为build_main的函数,该函数可以完成一些工作。.我希望用户输入可以通过从Dataframe中查找一行来工作。.

def build_main(name):
    df_manager = df_main[df_main['Employee'].str.contains(name)]

但是现在,只是要确保它进入build_main函数内部,我只是想...

print(name)

为什么用户输入项不传递到build_main函数中?

1 个答案:

答案 0 :(得分:0)

command=上的Button参数确定要调用的函数时,它不会传递任何参数。因此,您放置在其中的函数必须是没有任何参数的函数。

解决此问题的方法是从函数内部获取用户输入,而不是将其作为参数:

def build_main():
    name = manager_name_entry.get()
    df_manager = df_main[df_main['Employee'].str.contains(name)]

现在,这意味着该函数必须有一种方法来引用条目本身-通常,我们将所有内容都归为类的一部分,以便可以将在其他函数中有用的那些对象存储为类实例的属性。 :

self.manager_name_entry = tkinter.Entry()
... then later ...

def build_main(self): # a method
    name = self.manager_name_entry.get()
    df_manager = df_main[df_main['Employee'].str.contains(name)]
相关问题