写入条目后 tkinter 自动切换焦点

tkinter auto switch focus after write in entry

我有 4 个输入字段,我想在写完一个字母后将焦点切换到下一个字段。所以基本上我想写 4 个字母,每个字母都在另一个字段中,而无需触摸鼠标或 Tab 按钮。

from tkinter import *

root = Tk()
r1= StringVar()
r2= StringVar()
r3= StringVar()
r4= StringVar()

e1=Entry(root, textvariable=r1)
e1.pack()

e2=Entry(root, textvariable=r2)
e2.pack()

e3=Entry(root, textvariable=r3)
e3.pack()

e4=Entry(root, textvariable=r4)
e4.pack()

list=[e1,e2,e3,e4]
for i, element in enumerate(list):
    lista=[r1,r2,r3,r4]
    element.focus()
    while lista[i].get() == "":
        pass

root.mainloop()

我该怎么做? 感谢您的帮助:D

试试这样的:

all_typed = False
e1.focus()
boxes = [e1, e2, e3, e4]
focused = 0
while not all_typed:
    if focused > 3:
        all_typed = True
    elif boxes[focused].get() != "":
        focused += 1
        boxes[focused].focus()

不是我最好的代码,但应该可以。我对 TK 不太熟悉,所以我不知道这是否会阻止该应用程序使用 运行 或任何东西。

您的原始代码在到达 root.mainloop() 之前挂起,因为永远不会编辑 Entry() 字段。您必须使用 Tk 事件,例如打包 Entry 字段后,您可以试试这个:

liste=[e1,e2,e3,e4]
e1.focus()
curre=0
def nexte(e):
    global curre
    curre+=1
    if (curre<4):
        liste[curre].focus()
    else:
        root.unbind("<Key>")
        # we've got input into the last field, now do sth useful here...

root.bind("<Key>",nexte)

root.mainloop()