【问题标题】:How can tkinter entry widget to "tab" automatically after certain digits/characters?在某些数字/字符之后,tkinter 条目小部件如何自动“制表”?
【发布时间】:2020-12-14 09:21:11
【问题描述】:

我正在编写一个 python tkinter 试图拥有 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()

【问题讨论】:

    标签: python python-3.x tkinter tkinter-entry


    【解决方案1】:

    输入验证是您正在寻找的。试试下面的代码:

    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()
    

    【讨论】:

    • 非常感谢 FrainBr33z3。那是有见地的。 on_validate 可以被另一个入口小部件重用!
    • @YungLinMa 如果您在if 中添加额外的return False,它将完全禁止用户输入更多数字。
    猜你喜欢
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多