最近,我发现条目小部件的验证选项非常有用(参见this question)。最近,我尝试编写一个验证命令,以验证用户正在键入十六进制代码或命名颜色。我写了这个,它对十六进制代码很有用,偶尔也可以用于颜色。它在每一个按键上运行,除其他外。(validate=ALL)
def checkColorValid(P):
global backgroundColor
if not P:
return True
if P.lower() in colors:
backgroundColor = P
return True
if P[0] == '#':
try:
if len(P) == 1:
return True
int(P[1:], 16)
if len(P) < 8:
backgroundColor = P
return True
else:
return False
except ValueError:
return False
for color in colors:
if color.startswith(P.lower()):
return Truecolors是所有有效命名颜色的列表。
验证代码可以工作,除非您试图键入指定的颜色,然后开始一次又一次地键入相同的字符。一旦发生这种情况,验证似乎就会停止工作。在重新启动程序之前,它将不再运行。
发布于 2014-05-18 05:59:42
验证代码有可能返回None而不是True或False。也许添加最后返回语句会有帮助。
发布于 2022-08-02 02:35:28
同样的问题,在搜索中找到了这个页面。我不喜欢它,但想不出更好的办法。然后意识到我想得太多了。Python有一种很好的方法来测试任何东西是否有效,“试一试”。不一定是bg;只是任何物体是容易使用的,无论你测试的颜色。
def ColorTest(SomeColor):
IsGood = True
ColorTest=Toplevel()
try:
ColorTest['bg'] = SomeColor # Set backround color
#print(SomeColor+' is a valid color')
ColorTest.destroy()
return IsGood
except:
#print(SomeColor+' is an invalid color')
IsGood = False
ColorTest.destroy()
return IsGoodhttps://stackoverflow.com/questions/23718229
复制相似问题