maxliu06 发表于 2020-6-13 21:09:03

Entry 怎么样设置只能输入数字或小数字 或 -

如题    如何限制该组件的输入字符,只能是数字或1个小数点 或 1 个“-”

java2python 发表于 2020-6-13 21:15:42

应该没有的吧,要么截取控件的按键动作,看看有没有大佬知道。一般也没有这样的,就是最后提交的时候,检查一下输入。。。

Twilight6 发表于 2020-6-13 21:18:16

等等哈,我试试行不行的哈哈

Twilight6 发表于 2020-6-13 21:42:20



在小甲鱼老师的代码上改动了下,失去焦点时候验证

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()

maxliu06 发表于 2020-6-13 21:47:24

Twilight6 发表于 2020-6-13 21:42
在小甲鱼老师的代码上改动了下,失去焦点时候验证

小数点不行

Twilight6 发表于 2020-6-13 21:49:29

maxliu06 发表于 2020-6-13 21:47
小数点不行

可以   第二个组件只是方便你失去焦点,你要输入第一个组件

maxliu06 发表于 2020-6-13 21:55:24

Twilight6 发表于 2020-6-13 21:49
可以   第二个组件只是方便你失去焦点,你要输入第一个组件

真的不行,我是直接复制你代码的

Twilight6 发表于 2020-6-13 21:56:37

maxliu06 发表于 2020-6-13 21:55
真的不行,我是直接复制你代码的

噗我的错你看我的代码我那边 result

是打印结果是替换后的我刚刚测试忘记删了 你要打印是要打印 print(e1.get())

Twilight6 发表于 2020-6-13 22:00:25

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()

maxliu06 发表于 2020-6-13 22:48:23

Twilight6 发表于 2020-6-13 22:00


谢谢,这一个可以。

但是如果程序中 有多个 Entry都需要这样的,这函数应该怎么写?
自己想了很久, 怎么套都套不出来。

除非每一个Entry就写一个这样的函数。



Twilight6 发表于 2020-6-13 22:54:15

maxliu06 发表于 2020-6-13 22:48
谢谢,这一个可以。

但是如果程序中 有多个 Entry都需要这样的,这函数应该怎么写?


函数只要写一个就好了其他的 Entry 调用这个函数 就好 ,记得加上 这两个参数validate="focusout", validatecommand=<你定义的函数>

maxliu06 发表于 2020-6-13 22:58:21

Twilight6 发表于 2020-6-13 22:54
函数只要写一个就好了其他的 Entry 调用这个函数 就好 ,记得加上 这两个参数validate="focusout", v ...

但是这个函数 里面是指定了e1 的呢。。

Twilight6 发表于 2020-6-13 23:26:38

maxliu06 发表于 2020-6-13 22:58
但是这个函数 里面是指定了e1 的呢。。

确实哎...我刚刚去百度也没找到办法解决...

maxliu06 发表于 2020-6-14 09:18:27

Twilight6 发表于 2020-6-13 23:26
确实哎...我刚刚去百度也没找到办法解决...

{:5_100:}    我14个这样的Entry ......

maxliu06 发表于 2020-6-14 10:21:12

Twilight6 发表于 2020-6-13 23:26
确实哎...我刚刚去百度也没找到办法解决...



我是照着你的代码来的。。。但还出错

Twilight6 发表于 2020-6-14 10:26:27

maxliu06 发表于 2020-6-14 10:21
我是照着你的代码来的。。。但还出错

没见过这种报错 {:10_282:}

maxliu06 发表于 2020-6-14 10:26:43

Twilight6 发表于 2020-6-13 23:26
确实哎...我刚刚去百度也没找到办法解决...

能不能帮我构造成一个类对象 , 我直接在代码中引用???

谢谢。。

Twilight6 发表于 2020-6-14 10:40:32

maxliu06 发表于 2020-6-14 10:26
能不能帮我构造成一个类对象 , 我直接在代码中引用???

谢谢。。

模块嘛?   什么作用的

maxliu06 发表于 2020-6-14 11:32:01

Twilight6 发表于 2020-6-14 10:40
模块嘛?   什么作用的

就是判断Entry 输入是不是 浮点数或整数, 包括负数;
如果不是浮点数或整数 ,刚 弹出提示。

Twilight6 发表于 2020-6-14 15:21:26

maxliu06 发表于 2020-6-14 11:32
就是判断Entry 输入是不是 浮点数或整数, 包括负数;
如果不是浮点数或整数 ,刚 弹出提示。

主要是想不到怎么把是哪个组件触发给传到函数中去...
页: [1] 2
查看完整版本: Entry 怎么样设置只能输入数字或小数字 或 -