鱼C论坛

 找回密码
 立即注册
查看: 2923|回复: 21

[已解决]Entry 怎么样设置只能输入数字或小数字 或 -

[复制链接]
发表于 2020-6-13 21:09:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

最佳答案
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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-13 21:15:42 | 显示全部楼层
应该没有的吧,要么截取控件的按键动作,看看有没有大佬知道。一般也没有这样的,就是最后提交的时候,检查一下输入。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-13 21:18:16 | 显示全部楼层
等等哈,我试试行不行的哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-13 21:47:24 | 显示全部楼层
Twilight6 发表于 2020-6-13 21:42
在小甲鱼老师的代码上改动了下,失去焦点时候验证

小数点不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-13 21:49:29 | 显示全部楼层

可以   第二个组件只是方便你失去焦点,你要输入第一个组件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-13 21:55:24 | 显示全部楼层
Twilight6 发表于 2020-6-13 21:49
可以   第二个组件只是方便你失去焦点,你要输入第一个组件

真的不行,我是直接复制你代码的
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-13 21:56:37 | 显示全部楼层
maxliu06 发表于 2020-6-13 21:55
真的不行,我是直接复制你代码的


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

是打印结果是替换后的  我刚刚测试忘记删了 你要打印是要打印 print(e1.get())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-13 22:48:23 | 显示全部楼层

谢谢,  这一个可以。

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

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



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-13 22:54:15 | 显示全部楼层
maxliu06 发表于 2020-6-13 22:48
谢谢,  这一个可以。

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

函数只要写一个就好了  其他的 Entry 调用这个函数 就好 ,记得加上 这两个参数  validate="focusout", validatecommand=<你定义的函数>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

但是这个函数 里面是指定了e1 的呢。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-13 23:26:38 | 显示全部楼层
maxliu06 发表于 2020-6-13 22:58
但是这个函数 里面是指定了e1 的呢。。

确实哎...我刚刚去百度也没找到办法解决...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-14 09:18:27 | 显示全部楼层
Twilight6 发表于 2020-6-13 23:26
确实哎...我刚刚去百度也没找到办法解决...

    我14个这样的Entry ......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-14 10:21:12 | 显示全部楼层
Twilight6 发表于 2020-6-13 23:26
确实哎...我刚刚去百度也没找到办法解决...



我是照着你的代码来的。。。但还出错
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-14 10:26:27 | 显示全部楼层
maxliu06 发表于 2020-6-14 10:21
我是照着你的代码来的。。。但还出错

没见过这种报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-14 10:26:43 | 显示全部楼层
Twilight6 发表于 2020-6-13 23:26
确实哎...我刚刚去百度也没找到办法解决...

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

谢谢。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-14 10:40:32 | 显示全部楼层
maxliu06 发表于 2020-6-14 10:26
能不能帮我构造成一个类对象 , 我直接在代码中引用???

谢谢。。

模块嘛?   什么作用的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-14 11:32:01 | 显示全部楼层
Twilight6 发表于 2020-6-14 10:40
模块嘛?   什么作用的

就是判断Entry 输入是不是 浮点数或整数, 包括负数;  
如果不是浮点数或整数 ,刚 弹出提示。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

主要是想不到怎么把是哪个组件触发给传到函数中去...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 16:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表