如何自动更新从输入框获取结果?

how to update getting results from an entry box automatically?

我想更新从输入框获取结果的方式,当输入整数时,相应的输入框行会显示在其下方。我已经编写了以下代码以使其使用按钮工作。但是,我想让它在我输入数字时自动发生而无需按钮,行会更新。我检查了一种方法是使用 after()。我在函数中和函数外都放置在 after() 之后,但它不起作用。

from tkinter import *

root = Tk()
root.geometry("400x400")

n_para = IntVar()

label1 = Label(root, text="Numeric parameters")
label1.grid(row=0, column=0)

entry1 = Entry(root, textvariable=n_para)
entry1.grid(row=0, column=1)

def update():
    for i in range(1, n_para.get()+1):
        entryX = Entry(root)
        entryX.grid(row=i+1, column=0)

        entryY = Entry(root)
        entryY.grid(row=i+1, column=1)

        entryZ = Entry(root)
        entryZ.grid(row=i+1, column=2)

        root.after(100, update)

root.after(1, update)

button1 = Button(root, text="update", command=update)
button1.grid(row=1, column=0)

root.mainloop()

您应该尝试使用 <KeyRelease> 事件绑定。

import tkinter as tk

def on_focus_out(event):
    label.configure(text=inputtxt.get())


root = tk.Tk()
label = tk.Label(root)
label.pack()

inputtxt = tk.Entry()
  
inputtxt.pack()

root.bind("<KeyRelease>", on_focus_out)

root.mainloop()

这会键入在 real-time 中输入的文本。

根据 OP 的要求编辑代码:

from tkinter import *

root = Tk()
root.geometry("400x400")

n_para = IntVar()

label1 = Label(root, text="Numeric parameters")
label1.grid(row=0, column=0)

entry1 = Entry(root, textvariable=n_para)
entry1.grid(row=0, column=1)

def upd(event):
    x = entry1.get()
    if not x.isnumeric():
        x = 0
    for i in range(1, int(x)+1):
        entryX = Entry(root)
        entryX.grid(row=i+1, column=0)

        entryY = Entry(root)
        entryY.grid(row=i+1, column=1)

        entryZ = Entry(root)
        entryZ.grid(row=i+1, column=2)

#        root.after(100, update)

root.bind("<KeyRelease>", upd)

# button1 = Button(root, text="update", command=update)
# button1.grid(row=1, column=0)

root.mainloop()