在Tkinter中为StringVar的回调传递多个参数
我正在使用一小块输入框(Entry widgets),可能是5行1列、5行5列,或者其他类似的尺寸。当在输入框中输入数据时,我希望能把这些数据最终传递到一个二维的字符串数组中。
问题是,如果我有多个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的回调做到这一点,那我能不能在输入框上也做到呢?
如果我能在输入框上做到,有没有办法把事件(还有X和Y信息)一起传递给回调函数呢?
换句话说,有没有办法让我可以这样做:
def callback(*args):
print "Array coordinates of Entry (or Stringvar):",x,y
print "Current value:",sv.get
(是的,我知道我需要在那个回调中有办法引用x和y,所以我也需要知道怎么做。)
1 个回答
2
是的,你可以添加任何你想要的参数。
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))