Entry 怎么样设置只能输入数字或小数字 或 -
如题 如何限制该组件的输入字符,只能是数字或1个小数点 或 1 个“-”应该没有的吧,要么截取控件的按键动作,看看有没有大佬知道。一般也没有这样的,就是最后提交的时候,检查一下输入。。。 等等哈,我试试行不行的哈哈
在小甲鱼老师的代码上改动了下,失去焦点时候验证
from tkinter import *
from tkinter.messagebox import showinfo
master = Tk()
def test():
temp = e1.get().replace('.','')
result = temp.replace('-', '')
print(result,)
if (result.isdigit() and e1.get().count('.') <= 1 and e1.get().count('-') <= 1) or e1.get() == '':
return True
else:
showinfo('错误','请输入正确的数值!')
e1.delete(0, END)
return False
v = StringVar()
e1 = Entry(master, textvariable=v, validate="focusout", validatecommand=test)
e2 = Entry(master)
e1.pack(padx=10, pady=10)
e2.pack(padx=10, pady=10)
mainloop() Twilight6 发表于 2020-6-13 21:42
在小甲鱼老师的代码上改动了下,失去焦点时候验证
小数点不行 maxliu06 发表于 2020-6-13 21:47
小数点不行
可以 第二个组件只是方便你失去焦点,你要输入第一个组件 Twilight6 发表于 2020-6-13 21:49
可以 第二个组件只是方便你失去焦点,你要输入第一个组件
真的不行,我是直接复制你代码的 maxliu06 发表于 2020-6-13 21:55
真的不行,我是直接复制你代码的
噗我的错你看我的代码我那边 result
是打印结果是替换后的我刚刚测试忘记删了 你要打印是要打印 print(e1.get()) maxliu06 发表于 2020-6-13 21:55
真的不行,我是直接复制你代码的
from tkinter import *
from tkinter.messagebox import showinfo
master = Tk()
def test():
temp = e1.get().replace('.','')
result = temp.replace('-', '')
if (result.isdigit() and e1.get().count('.') <= 1 and e1.get().count('-') <= 1) or e1.get() == '':
print(e1.get())
return True
else:
showinfo('错误','请输入正确的数值!')
e1.delete(0, END)
return False
v = StringVar()
e1 = Entry(master, textvariable=v, validate="focusout", validatecommand=test)
e2 = Entry(master)
e1.pack(padx=10, pady=10)
e2.pack(padx=10, pady=10)
mainloop() Twilight6 发表于 2020-6-13 22:00
谢谢,这一个可以。
但是如果程序中 有多个 Entry都需要这样的,这函数应该怎么写?
自己想了很久, 怎么套都套不出来。
除非每一个Entry就写一个这样的函数。
maxliu06 发表于 2020-6-13 22:48
谢谢,这一个可以。
但是如果程序中 有多个 Entry都需要这样的,这函数应该怎么写?
函数只要写一个就好了其他的 Entry 调用这个函数 就好 ,记得加上 这两个参数validate="focusout", validatecommand=<你定义的函数> Twilight6 发表于 2020-6-13 22:54
函数只要写一个就好了其他的 Entry 调用这个函数 就好 ,记得加上 这两个参数validate="focusout", v ...
但是这个函数 里面是指定了e1 的呢。。 maxliu06 发表于 2020-6-13 22:58
但是这个函数 里面是指定了e1 的呢。。
确实哎...我刚刚去百度也没找到办法解决... Twilight6 发表于 2020-6-13 23:26
确实哎...我刚刚去百度也没找到办法解决...
{:5_100:} 我14个这样的Entry ...... Twilight6 发表于 2020-6-13 23:26
确实哎...我刚刚去百度也没找到办法解决...
我是照着你的代码来的。。。但还出错 maxliu06 发表于 2020-6-14 10:21
我是照着你的代码来的。。。但还出错
没见过这种报错 {:10_282:} Twilight6 发表于 2020-6-13 23:26
确实哎...我刚刚去百度也没找到办法解决...
能不能帮我构造成一个类对象 , 我直接在代码中引用???
谢谢。。 maxliu06 发表于 2020-6-14 10:26
能不能帮我构造成一个类对象 , 我直接在代码中引用???
谢谢。。
模块嘛? 什么作用的 Twilight6 发表于 2020-6-14 10:40
模块嘛? 什么作用的
就是判断Entry 输入是不是 浮点数或整数, 包括负数;
如果不是浮点数或整数 ,刚 弹出提示。 maxliu06 发表于 2020-6-14 11:32
就是判断Entry 输入是不是 浮点数或整数, 包括负数;
如果不是浮点数或整数 ,刚 弹出提示。
主要是想不到怎么把是哪个组件触发给传到函数中去...
页:
[1]
2