我正在做一个关于数学方程的程序,所以在我的程序中有很多条目,但是我很难清除它们。你知道吗
对于条目,我限制字符限制,并且只允许数字和(“,”)或(“.”)。如果我在我的条目中键入例如“1000”,然后突出显示它并按backspace键,一切都会解决。但只要我键入“100,25”并在混合中加上逗号。按backspace后不会删除。你知道吗
from tkinter import *
root = Tk()
def validatecontent(var):
return (var.isdigit() == bool(var)) or var == (",") or var == (".")
vcmd = (root.register(validatecontent), '%S')
def character_limit6(var):
if len(var.get()) > 0:
var.set(var.get()[:6])
var = StringVar()
entry = Entry(root, textvariable=var, validate='all',
validatecommand=vcmd)
entry.pack()
var.trace("w", lambda *args: character_limit6(var))
root.mainloop()
在问题中,当您删除一个选择时,validatecontent中的
var
参数是一个字符串,例如“0,0”,它使您的验证例程失败。你知道吗是否只接受有效的浮点字符串? 您需要像“1234.45”或“123,45”这样的字符串吗?你知道吗
下面我假设“123,45”
Validatecontent在用“.”替换任何“,”之后尝试将字符串转换为浮点。你知道吗
如果可以,则返回true,否则仅当字符串为空时才返回true。你知道吗
可能有更好的验证函数涉及正则表达式。不过,这很容易理解。如果需要,该条目仍然可以链接到StringVar。不过,不需要进行验证。你知道吗
编辑:问题似乎是它拒绝将字符串“,”或“.”识别为合法字符串,或者将字符串数字和“,”/“.”识别为合法字符串。以下似乎有效:
相关问题 更多 >
编程相关推荐