写入条目后 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()
我有 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()