在 tKinter (Python) 中使用绑定输入条目文本

问题描述 投票:0回答:2

我在函数内创建了一个条目小部件。

search_1=Entry(okno, width=45)
search_1.grid( row=3, column=1)
#okno is main window of tK

然后我尝试从中获取变量

search_1.bind("<Return>", lambda event, a=search_1.get(), b="AUTOR": activate(a, b)) 

但是函数 activate 只接收 b 变量,它是一个定义的字符串。未传递应为 search_1 条目中的文本的“a”变量。 知道为什么吗?

我尝试在激活函数中读取该值(search_1.get()),但条目小部件不是全局的。不过我更喜欢使用bind/lambda。

python tkinter lambda tkinter-entry
2个回答
2
投票

问题是您在绑定创建

时调用
search_1.get(),而不是在用户按下返回键时调用。

在这种情况下,您应该停止使用 lambda 并使用正确的函数。它们更容易编写、阅读和调试。您还可以利用绑定函数将传递一个对象,该对象包含对接收事件的小部件的引用。这使得代码减少对全局变量的依赖,这几乎总是一件好事。

def do_search(event): a=event.widget.get() b="AUTOR" activate(a, b) ... search_1.bind("<Return>", do_search)
有了它,您可以更轻松地调试问题。


0
投票
“激活”是什么意思 打印(b)工作 print(a) 不是我认为“a”将是小部件的名称

© www.soinside.com 2019 - 2024. All rights reserved.