我在函数内创建了一个条目小部件。
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。
问题是您在绑定创建
时调用
search_1.get()
,而不是在用户按下返回键时调用。
在这种情况下,您应该停止使用 lambda 并使用正确的函数。它们更容易编写、阅读和调试。您还可以利用绑定函数将传递一个对象,该对象包含对接收事件的小部件的引用。这使得代码减少对全局变量的依赖,这几乎总是一件好事。
def do_search(event):
a=event.widget.get()
b="AUTOR"
activate(a, b)
...
search_1.bind("<Return>", do_search)
有了它,您可以更轻松地调试问题。