Python 将多个参数传递给Tkinter中StringVar的回调

Python 将多个参数传递给Tkinter中StringVar的回调,python,tkinter,Python,Tkinter,我正在使用一个小网格的入门小部件。它可以是5 x 1或5 x 5或介于这些尺寸之间或接近这些尺寸的其他尺寸。当数据输入到Entry小部件中时,我希望能够最终将其传递到一个str()变量的2D数组 问题是,如果我有很多StringVar()变量,当我使用StringVar.trace()时,有没有办法向回调函数传递额外的参数 我目前有: import Tkinter guiRoot = Tkinter.Tk() hWindow = Tkinter.Frame(guiRoot) hWindow.gr

我正在使用一个小网格的入门小部件。它可以是5 x 1或5 x 5或介于这些尺寸之间或接近这些尺寸的其他尺寸。当数据输入到Entry小部件中时,我希望能够最终将其传递到一个str()变量的2D数组

问题是,如果我有很多StringVar()变量,当我使用StringVar.trace()时,有没有办法向回调函数传递额外的参数

我目前有:

import Tkinter
guiRoot = Tkinter.Tk()
hWindow = Tkinter.Frame(guiRoot)
hWindow.grid();

def callback(*args):
    print "Current value:",sv.get()

sv = Tkinter.StringVar()
sv.trace("w", callback)
Tkinter.Entry(hWindow, textvariable=sv).grid(row=1,column=1)
guiRoot.mainloop()
但是我想把X和Y坐标也传递给回调函数。可能吗

如果我可以通过对StringVar的回调来实现,那么我可以为Entry小部件实现吗

如果我使用Entry小部件来实现,有没有一种方法可以将事件传递给回调函数(以及X和Y信息)并传递给回调函数

换句话说,我有没有办法:

def callback(*args):
    print "Array coordinates of Entry (or Stringvar):",x,y
    print "Current value:",sv.get

(是的,我知道我必须有某种方法在回调中引用x和y,所以我也需要知道如何做。)

是的,您可以添加任何需要的参数

def callback(x,y,*args):
    print "x:", x, "y:", y
    print "args:", args
...
sv.trace("w", lambda name1, name2, op, x=100, y=200: callback(x,y,name1,name2,op))

它不是这样工作的-您将回调更改为this lambd,但仍将不带参数地调用labmbda。@jsbueno:这对我的尝试有影响吗?我想您刚刚改变了我对其工作方式的理解。所以我在这里做的是添加一个lambda和lambda,而不是调用回调。然后lambda调用回调。这是正确的吗?另一个问题是:我认为这与向Tkinter.Entry这样的小部件添加回调是一样的?我也可以用bind函数来实现吗?如果是这样,使用bind,如何将事件传递给回调?@Tango:lambda由跟踪调用。跟踪将向回调中添加它已经添加的参数。然后lambda将调用回调函数。是的,它同样适用于绑定,当然,
bind
只会导致一个额外参数成为调用的一部分,而不像跟踪中的三个。