Я пишу tkinter на python, пытаясь иметь 2 виджета входа. После ввода 5 цифр в первом виджете ввода я хочу, чтобы 6-я цифра автоматически переходила к следующему виджету ввода. Как я могу переписать его, чтобы он стал реальностью?
import tkinter as tk
root=tk.Tk()
canvas1=tk.Canvas(root,width=400,height=400,bg='#FFFFFF')
canvas1.pack()
entry1=tk.Entry(root,width=8)
canvas1.create_window(10,100,window=entry1,anchor='nw')
entry1.focus_set()
entry1=tk.Entry(root,width=8)
canvas1.create_window(100,100,window=entry1,anchor='nw')
root.mainloop()
Подтверждение входа — это то, что вы ищете. Попробуйте следующий код:
import tkinter as tk
def on_validate(P):
if len(P) == 5: # The 6th entry is taken up by the 2nd entry widget
entry2.focus_set()
return True
root = tk.Tk()
canvas1 = tk.Canvas(root, width=400, height=400, bg='#FFFFFF')
canvas1.pack()
entry1 = tk.Entry(root, width=8, validate = "key")
entry1['validatecommand'] = (entry1.register(on_validate), '%P')
canvas1.create_window(10, 100, window=entry1, anchor='nw')
entry1.focus_set()
entry2 = tk.Entry(root, width=8)
canvas1.create_window(100, 100, window=entry2, anchor='nw')
root.mainloop()
@YungLinMa Если вы добавите дополнительный return False
внутри if
, пользователь вообще не сможет вводить какие-либо цифры.
Большое спасибо FrainBr33z3. Это проницательно. on_validate может быть повторно использован другим виджетом входа!