【发布时间】:2021-01-02 15:17:24
【问题描述】:
我正在使用validatecommand 在 tkinter 中验证表单。有两个条目,一个应该只接受整数,另一个应该接受浮点数。
这是基本代码:
import tkinter as tk
class Form(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
validCmd1 = (self.register(self.val1), "%P")
validCmd2 = (self.register(self.val2), "%P")
self.lab1 = tk.Label(self, text = "Float:")
self.lab1.grid(row = 1, column = 0, padx = 10, pady = 10)
self.ent1 = tk.Entry(self, validate = "key", validatecommand = validCmd1)
self.ent1.grid(row = 1, column = 1)
self.lab2 = tk.Label(self, text = "Integer:")
self.lab2.grid(row = 2, column = 0, padx = 10, pady = (0,10))
self.ent2 = tk.Entry(self, validate = "key", validatecommand = validCmd2)
self.ent2.grid(row = 2, column = 1)
def val1(self, value):
try:
float(value)
except:
return False
else:
return True
def val2(self, value):
try:
int(value)
except:
return False
else:
return True
app = Form()
app.mainloop()
我没有为两个非常相似的任务编写两个不同的函数,而是尝试将一个整数传递给验证命令(1 表示浮点数,2 表示整数)。我尝试使用 lambdas 将值传递给验证函数,首先在 self.register 部分:self.register(lambda: self.val1(1)) 但这给了TypeError: <lambda>() takes 0 positional arguments but 1 was given,第二次我尝试在 validatecommand 命令上使用 lambda:validatecommand = lambda: validCmd1(1) 这给了@987654327 @.
是否可以将值传递给验证命令?
【问题讨论】:
-
this 对你有帮助吗
标签: python-3.x validation tkinter