【发布时间】:2017-04-12 05:23:58
【问题描述】:
我有一个带有输入框的 tkinter GUI,我只想允许数字。有人可以向我解释验证中每个命令/代码行的作用。我不明白 vcmd 变量和所有 '%i' '%s' 的东西。谢谢:)
更新: 我有一个不同的应用程序可以使用这个 vcmd 命令,但我并不完全理解它。这是我的验证码:
def validate(self, action, index, value_if_allowed, prior_value, text, validation_type, trigger_type, widget_name):
if not int(action):
return True
elif text in '0123456789.-+':
try:
float(value_if_allowed)
return True
except ValueError:
return False
else:
return False
我不明白为什么在这段代码中我需要所有这些:
action, index, value_if_allowed, prior_value, text, validation_type, trigger_type, widget_name
为什么我需要所有这些特定于我的验证代码才能正常运行,它们有什么用? 您提供的文档是有道理的,但其中一些 '%s', '%i' 东西对于我的特定代码似乎是不必要的,但它只适用于所有这些内容,如下所示:
vcmd = (self.master.register(self.validate), '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')
我也想知道 self.master.register 是做什么的,我还是想不通。
【问题讨论】:
-
我现在在我更新的问题中使用该示例。它有效,所以我不想弄乱它,但它需要所有参数 0.o
标签: python-3.x tkinter