访问Entry小部件信息:tkinter python
我正在写一个Tkinter程序,里面有一个主窗口,显示了一些标签和输入框。
比如说:名字 -> 搜索词 输入框
我想从这些输入框中获取一系列的值(比如: ['', '用户输入', '用户输入'])。
我已经在主窗口里创建了输入框,并且写了一个函数来获取这些值:
def get_user_entries(user_entries):
new_search_terms = []
for entry in user_entries:
new_search_terms.append(entry.get())
return new_search_terms
我希望能够访问一个叫做new_search_terms的列表,这样我就可以在它上面运行另一个Python程序。
我试过把这个函数设置为按钮的命令,也试过在不同的地方绑定按钮,甚至在不同的地方调用按钮。我还尝试创建一个类,把new_search_terms作为类的变量,但由于我无法访问上面函数返回的信息,所以更新后的类变量没有保存下来。在网上找了很多资料和书籍,我还没有找到一个例子,能让按钮函数返回信息而不是仅仅打印出来。我需要在其他地方访问这些信息。
有没有办法让我获取到我需要的信息,或者在Tkinter中有没有其他我没想到的方法?
这是我创建按钮的代码:
done = Button(root, text='Done', command= lambda: get_user_entries(user_entries))
done.pack()
这是我创建输入框和标签的代码:
def uc_1(original_names, final_names, root):
user_entries = []
for index in range(len(original_names)):
row = Frame(root)
info = Label(row, text = original_names[index]+'->'+final_names[index])
user_entry = Entry(row)
row.pack(side=TOP, fill=X)
user_entry.pack(side=RIGHT, expand=YES, fill=X)
user_entries.append(user_entry)
info.pack(side=LEFT)
return user_entries
谢谢!
1 个回答
0
按钮命令并不会“返回”结果。其实它们是有返回的,但返回的是给事件循环的,所以没有东西可以处理这些返回的结果。
话说回来,搞不清楚你在问什么。你说“我无法访问函数返回的信息”,但我看不出有什么理由不能访问。如果你调用这个函数,它难道不返回返回语句的内容吗?这听起来不太可能。
如果你把一个按钮配置为运行'self.OnButton',然后定义'self.OnButton'去调用你的函数'get_user_entries',那会发生什么呢?它难道不返回任何东西吗?
换个角度看:你的按钮函数不应该是去“返回”什么,而是应该去“做”一些事情。它可以通过调用你的函数,获取返回的结果,然后再调用你想要的其他东西。