我试图将一个函数绑定到我的Tkinter根,当用户按下return时,它会做出反应。这是代码:
def returnPressed(event):
print repr(event.widget)
master = Tk()
master.bind("<Return>", returnPressed)
myStringVar = StringVar(value="Foo")
myEntry = Entry(master, textvariable=myStringVar)
myEntry.grid()
master.mainloop()
这可行,但是现在我需要在
StringVar
函数中获取Entry
的returnPressed
变量。我有小部件,但无法获取变量对象。我知道如何获取变量内容,但我确实需要该对象。
最佳答案
要获取小部件的任何属性,请使用cget
:
print repr(event.widget.cget("textvariable"))
但是,在此特定实例中,由于一些实现细节,您得到的是stringvar的内部名称,而不是stringvar本身。因此,您将不得不寻找另一种方式。
最简单的方法可能是将stringvar实例传递给所调用的函数。您可以使用lambda或functools.partial做到这一点。例如:
def returnPressed(event, v):
...
master.bind("<Return>",lambda event, v=myStringVar: returnPressed(event, v))