这是我的第一个问题,如果我做错了很抱歉
我正在创建一个entry类,它将验证输入的长度,然后关注下一个小部件。下面的代码可以做到这一点,但它会在所需长度后触发按键上的焦点更改,这会导致我们丢失该按键
示例:如果在第一个输入框中键入123456789,最终结果将是输入框1中的1234,输入框2中的6789
import tkinter as tk
class ValidateEntry(tk.Frame):
def __init__(self, parent, width=20, txt=None):
tk.Frame.__init__(self, parent)
self.width = width
vcmd = (self.register(self.validate), '%i', '%S', '%d', '%P')
self.entry = tk.Entry(self, width=self.width, validate='key', vcmd=vcmd)
if txt is not None:
self.entry.insert('end', txt)
self.entry.pack()
def validate(self, i, S, d, P):# i = index, S = insert character, d = action, P = entry value
if len(P)-1 == self.width and d != 0:
self.entry.tk_focusNext().focus()
return False
return True
root = tk.Tk()
entry1 = ValidateEntry(root, width=4)
entry2 = tk.Entry(root, width=8)
entry1.pack()
entry2.pack()
root.mainloop()
在上面的例子中,我想不出一个方法来改变焦点并保持第五次按键
在第四次按键时,您希望接受该键(因此返回true)并更改焦点。因此,只需将validate函数更改为:
相关问题 更多 >
编程相关推荐