Tkinter 条目验证
Tkinter Entry validatation
我正在使用 Tkinter 在 Python 3.6 中编写程序,其中客户有多个 (11) 输入字段。我希望这些输入字段只接受整数,并且还能够定义最大字符数。
我已经有一个函数可以做到这一点。但此功能仅适用于一个输入字段。我尝试通过调用函数来输入变量,例如它会更改另一个输入字段。我无法做到这一点。
这是我拥有的功能,适用于 1 个输入字段。
def limitMuntgeld(self, *args):
value = self.invoerM.get()
if len(value) > 5:
self.invoerM.set(value[:5])
if value.lower() in "abcdefghijklmnopqrstuvwxyz-=[];/":
self.invoerM.set(value[:0])
这是与函数一起使用的示例输入字段代码
self.invoerMuntgeld = Entry(self, font=('Arial', 14), textvariable=self.invoerM)
这与下面发布的输入字段上的跟踪相结合。
self.invoerM = StringVar()
self.invoerM.trace('w', self.limitMuntgeld)
我也尝试过使用 vcmd 和 validatecommand。然而,并没有什么好结果。
我的最终结果是一个函数可以处理所有输入字段。如果有人有任何建议,我会洗耳恭听!
进行条目验证的正确方法是使用 validatecommand
选项而不是使用 trace
。使用小部件内置的验证功能,您不需要对小部件本身的引用(尽管您可以根据需要使用它)。
当 validatecommand
为 运行 时,如果输入有效,您可以让它传递新值。你只需要检查这个值然后 return True
或 False
,而不必知道它适用于哪个小部件。
例如:
import tkinter as tk
def validate_input(new_value):
valid = new_value .isdigit() and len(new_value) <= 5
return valid
root = tk.Tk()
validate = root.register(validate_input)
for i in range(10):
entry = tk.Entry(root, validate="key", validatecommand=(validate, "%P"))
entry.pack(side="top", fill="x")
root.mainloop()
有关 %P
代表什么以及其他什么可以用作命令参数的信息,请参阅以下问题:Interactively validating Entry widget content in tkinter
我正在使用 Tkinter 在 Python 3.6 中编写程序,其中客户有多个 (11) 输入字段。我希望这些输入字段只接受整数,并且还能够定义最大字符数。
我已经有一个函数可以做到这一点。但此功能仅适用于一个输入字段。我尝试通过调用函数来输入变量,例如它会更改另一个输入字段。我无法做到这一点。
这是我拥有的功能,适用于 1 个输入字段。
def limitMuntgeld(self, *args):
value = self.invoerM.get()
if len(value) > 5:
self.invoerM.set(value[:5])
if value.lower() in "abcdefghijklmnopqrstuvwxyz-=[];/":
self.invoerM.set(value[:0])
这是与函数一起使用的示例输入字段代码
self.invoerMuntgeld = Entry(self, font=('Arial', 14), textvariable=self.invoerM)
这与下面发布的输入字段上的跟踪相结合。
self.invoerM = StringVar()
self.invoerM.trace('w', self.limitMuntgeld)
我也尝试过使用 vcmd 和 validatecommand。然而,并没有什么好结果。 我的最终结果是一个函数可以处理所有输入字段。如果有人有任何建议,我会洗耳恭听!
进行条目验证的正确方法是使用 validatecommand
选项而不是使用 trace
。使用小部件内置的验证功能,您不需要对小部件本身的引用(尽管您可以根据需要使用它)。
当 validatecommand
为 运行 时,如果输入有效,您可以让它传递新值。你只需要检查这个值然后 return True
或 False
,而不必知道它适用于哪个小部件。
例如:
import tkinter as tk
def validate_input(new_value):
valid = new_value .isdigit() and len(new_value) <= 5
return valid
root = tk.Tk()
validate = root.register(validate_input)
for i in range(10):
entry = tk.Entry(root, validate="key", validatecommand=(validate, "%P"))
entry.pack(side="top", fill="x")
root.mainloop()
有关 %P
代表什么以及其他什么可以用作命令参数的信息,请参阅以下问题:Interactively validating Entry widget content in tkinter