我有这样简单的代码:
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?
答案 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()