我试图将一个函数绑定到我的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函数中获取EntryreturnPressed变量。

我有小部件,但无法获取变量对象。我知道如何获取变量内容,但我确实需要该对象。

最佳答案

要获取小部件的任何属性,请使用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))

10-06 13:34