为了创建一个输入有限(3或4个字符)的Python Entry小部件,我发现this
对验证一无所知,我的问题是:该教程中最大长度的'子类'可以用作自己的类,引用条目小部件作为其父级而不是'ValidatingEntry',或者是所有的工作在它上面(验证)必要吗?有没有更短的方法来实现这个目标?
然后我看到this question及其答案:
考虑做那样的事情。然后我发现了内置的'setattr'功能。是否可以将其应用于“Entry”类的新实例并使用它来限制字符?
我应该澄清 - 我正在尝试将此限制应用于3个条目小部件 - 两个限制为3个字符,一个限制为4个字符(电话号码)
感谢。
答案 0 :(得分:0)
关于您在Entry小部件中对长度验证的所述关注。输入长度验证的一个例子。
while {$x1 > $xmin && $x1 < $xmax && $y1 > $ymin && $y1 < $ymax} {
# For horizontal axis
while {$x1 > $xmin && $x1 < $xmax} {
set azi [expr (45+90)]
set dip 0
set length 2
set dist [expr (cos($dip) * $length)]
set x1 [expr ($x1 + (sin($azimuth) * $dist))]
set y1 [expr ($y1 + (cos($azimuth) * $dist))]
set goToVer "y"
incr Count
}
# For vertical axis
if {$goToVer == "y"} {
set azi 45
set dip 0
set length 5
set dist [expr (cos($dip) * $length)]
set x1 [expr ($xVer + (sin($azimuth) * $dist))]
set y1 [expr ($yVer + (cos($azimuth) * $dist))]
set xVer $x1
set yVer $y1
incr Count
}
}
建议响应对条目小部件之间焦点切换的评论,更改验证'all' - &gt; 'key',并使用focus_set()
# further reference
# http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/entry-validation.html
import tkinter as tk
root = tk.Tk()
# write the validation command
def _phone_validation(text_size_if_change_allowed):
if len(text_size_if_change_allowed)<4:
return True
return False
# register a validation command
valid_phone_number = root.register(_phone_validation)
# reference the validation command
entry = tk.Entry(validate='all',
validatecommand=(valid_phone_number,'%P' ))
entry.pack()
root.mainloop()