在 Tkinter 中获取实时数据

Getting real time data in Tkinter

考虑以下代码:

from tkinter import *

screen = Tk()

e =Entry()
e.pack()


screen.mainloop()

现在如何实时显示e条目小部件中输入的字符的长度?数据是显示在GUI还是对应终端都无所谓

这里至少有 3 种方法可以做到这一点,其中一种比另一种更好:

  • 使用 StringVar 中的 trace:
def func(*args):
    print(len(var.get()))

var = StringVar()

e = Entry(screen,textvariable=var)
e.pack()

var.trace('w',func)

每次var的值改变,都会调用func

  • 使用bind每次按键释放:
def func(*args):
    print(len(e.get()))

e.bind('<KeyRelease>',func)
  • 使用after(ms,func)继续重复函数:
def func():
    print(len(e.get()))
    screen.after(500,func)

func()

如您所见,第一种方法更有效,因为当您 select 所有项目(使用 Ctrl+A)等。使用 after() 将是最荒谬的方法,因为它会一直打印长度,因为没有提供任何限制。