如何将变量连接到 Entry 小部件?

发布于 2024-08-26 07:27:09 字数 404 浏览 7 评论 0原文

我正在尝试将变量与 Tkinter 条目小部件关联起来,方式是:

  1. 每当我更改条目的值(“内容”)时,主要是通过在其中键入内容,该变量会自动分配我所输入内容的值。我不必先按下“更新值”按钮或类似的按钮。

  2. 每当变量发生更改(由程序的其他部分更改)时,我希望显示的条目值自动调整。我相信这可以通过文本变量来实现。

我阅读了 http://effbot.org/tkinterbook/entry.htm 上的示例,但是它并不能完全帮助我实现我的想法。我有一种感觉,有一种方法可以通过使用条目的“验证”来确保第一个条件。有什么想法吗?

I'm trying to associate a variable with a Tkinter entry widget, in a way that:

  1. Whenever I change the value (the "content") of the entry, mainly by typing something into it, the variable automatically gets assigned the value of what I've typed. Without me having to push a button "Update value " or something like that first.

  2. Whenever the variable gets changed (by some other part of the programm), I want the entry value displayed to be adjusted automatically. I believe that this could work via the textvariable.

I read the example on http://effbot.org/tkinterbook/entry.htm, but it is not exactly helping me for what I have in mind. I have a feeling that there is a way of ensuring the first condition with using entry's "validate". Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不离久伴 2024-09-02 07:27:09

我想你想要这样的东西。在下面的示例中,我创建了一个变量 myvar 并将其指定为 LabelEntrytextvariable小部件。通过这种方式,两者是耦合的,Entry 小部件中的更改将自动反映在 Label 中。

您还可以在变量上设置跟踪,例如写入标准输出。

from tkinter import *


root = Tk()
root.title("MyApp")

myvar = StringVar()

def mywarWritten(*args):
    print "mywarWritten",myvar.get()

myvar.trace("w", mywarWritten)

label = Label(root, textvariable=myvar)
label.pack()

text_entry = Entry(root, textvariable=myvar)
text_entry.pack()

root.mainloop()

I think you want something like this. In the example below, I created a variable myvar and assigned it to be textvariable of both a Label and Entry widgets. This way both are coupled and changes in the Entry widget will reflect automatically in Label.

You can also set trace on variables, e.g. to write to stdout.

from tkinter import *


root = Tk()
root.title("MyApp")

myvar = StringVar()

def mywarWritten(*args):
    print "mywarWritten",myvar.get()

myvar.trace("w", mywarWritten)

label = Label(root, textvariable=myvar)
label.pack()

text_entry = Entry(root, textvariable=myvar)
text_entry.pack()

root.mainloop()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文