如何使用PY_VAR0或PY_VAR1获取Entry值?

时间:2014-06-02 00:53:42

标签: python tkinter

我有这样简单的代码:

from tkinter import *



def _show_value(*pargs):
    print(*pargs)



root = Tk()

entry_var1 = StringVar()
entry_var1.trace('w', _show_value)

entry_var2 = StringVar()
entry_var2.trace('w', _show_value)


e1 = Entry(root, textvariable=entry_var1)
e1.pack()

e2 = Entry(root, textvariable=entry_var2)
e2.pack()      


root.mainloop()

我想在每次写入时即时打印e1和e2的内容。但是,我得到了:

而不是文字
PY_VAR0  w
PY_VAR0  w
PY_VAR1  w
PY_VAR1  w

如何从e1获取基于PY_VAR0的文本,以及当出现PY_VAR1时来自e2的文本?这是entry_var1和entry_var2的一些内部名称吗?如何使用PY_VAR0和PY_VAR1引用entry_var1和entry_var2?

1 个答案:

答案 0 :(得分:1)

你可以用两种方式做到这一点。

首先,使用根窗口的globalgetvar方法。

def _show_value(*pargs):
    print(*pargs)
    print(root.globalgetvar(pargs[0]))

这应该给你相应条目的文本。

第二次,可能更推荐将StringVar引用传递给_show_value,例如使用lambdas,而不是使用Tk的全局变量:< / p>

from tkinter import *



def _show_value(v, *pargs):
    print(*pargs)
    print(v.get())



root = Tk()

entry_var1 = StringVar()
entry_var1.trace('w', lambda *pargs: _show_value(entry_var1, *pargs))

entry_var2 = StringVar()
entry_var2.trace('w', lambda *pargs: _show_value(entry_var2, *pargs))


e1 = Entry(root, textvariable=entry_var1)
e1.pack()

e2 = Entry(root, textvariable=entry_var2)
e2.pack()      


root.mainloop()