如何使用PY_VAR0或PY_VAR1获取Entry值?
我有一段简单的代码,如下所示:
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
我该如何根据PY_VAR0获取e1的文本,当PY_VAR1出现时获取e2的文本?这是不是entry_var1和entry_var2的一些内部名称?我该如何使用PY_VAR0和PY_VAR1来引用entry_var1和entry_var2?
1 个回答
3
你可以用两种方法来实现这个功能。
第一种,使用你主窗口的 globalgetvar
方法。
def _show_value(*pargs):
print(*pargs)
print(root.globalgetvar(pargs[0]))
这样可以获取到相应输入框里的文本。
第二种,更推荐的方法是将 StringVar
的引用传递给 _show_value
,比如可以使用 lambdas
,而不是使用 Tk 的全局变量:
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()