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

时间:2014-08-23 09:49:30

标签: python tkinter

我正在使用一小部分Entry小部件网格。它可以是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 - 所以我也需要知道如何做到这一点。)

1 个答案:

答案 0 :(得分: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))
相关问题