访问Entry小部件信息:tkinter python

0 投票
1 回答
781 浏览
提问于 2025-04-16 20:29

我正在写一个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',那会发生什么呢?它难道不返回任何东西吗?

换个角度看:你的按钮函数不应该是去“返回”什么,而是应该去“做”一些事情。它可以通过调用你的函数,获取返回的结果,然后再调用你想要的其他东西。

撰写回答