如何使用 PY_VAR0 或 PY_VAR1 获取条目值? [英] How to get Entry value using PY_VAR0 or PY_VAR1?

查看:77
本文介绍了如何使用 PY_VAR0 或 PY_VAR1 获取条目值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的简单代码:

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 的内容.但我得到的不是文本,而是:

I want to print content of e1 and e2 on the fly, each time they are written. But instead of text, I get:

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?

How to get text from e1 based on PY_VAR0, and when text from e2 when PY_VAR1 appears? Is this some internal names of entry_var1 and entry_var2? How do I reference entry_var1 and entry_var2 using PY_VAR0 and PY_VAR1?

推荐答案

您可以通过两种方式做到这一点.

You can do it in two ways.

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

First, use globalgetvar method of your root window.

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

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

This, should give you text of respective entry.

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

Second, and probably more recommended is to pass StringVar references into _show_value, using lambdas for instance, rather then using global variables of 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()

这篇关于如何使用 PY_VAR0 或 PY_VAR1 获取条目值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆