鱼C论坛

 找回密码
 立即注册
查看: 818|回复: 15

easygui使用问题

[复制链接]
发表于 2020-4-29 20:19:34 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
import easygui as g
f = g.enterbox()
if f.isdigit():
      g.msgbox('您输入的是整数')

在enterbox中点击取消按钮的话,就会报错,说'NoneType' object has no attribute 'isdigit'
就是想知道点击取消之后,enterbox返回的是什么啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-29 20:23:12 | 显示全部楼层
本帖最后由 liuzhengyuan 于 2020-4-29 20:25 编辑

中途输出一下
import easygui as g
f = g.enterbox()
print(f)
if f.isdigit():
      g.msgbox('您输入的是整数')
输出 None

此时它没有数据类型(None Type),所以会这样。。。

加一个判断是否为 None 的 if 就可以了
https://www.cnblogs.com/lincappu/p/8305763.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-29 20:25:45 From FishC Mobile | 显示全部楼层
就是点击取消的话,会报错啊,就是None没有isdigit属性,怎么让它不报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 20:26:08 | 显示全部楼层
hehe210417 发表于 2020-4-29 20:25
就是点击取消的话,会报错啊,就是None没有isdigit属性,怎么让它不报错

加一个判断是否为 None 的 if 就可以了
https://www.cnblogs.com/lincappu/p/8305763.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 20:32:22 | 显示全部楼层
import easygui as g
f = g.enterbox()
if f and f.isdigit():
      g.msgbox('您输入的是整数')
这样就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 20:41:47 | 显示全部楼层
当用户按下取消按钮的时候 enterbox() 会返回 None,加一个判断即可。
import easygui as g

f = g.enterbox()
if f is not None:  # 如果 f 不为 None
    if f.isdigit():
        g.msgbox('您输入的是整数')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-29 20:42:35 From FishC Mobile | 显示全部楼层
import easygui as g
f = g.enterbox()
if f.isdigit():
      g.msgbox('您输入的是整数')
else:
      g.enterbox('输入有误,请输入一个整数')

想实现这个目的,就是做之前的那个闰年判断器,首先判断是不是输入了整数,是的话进行判断,不是的话重新输入,点击enterbox的取消按钮就能退出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 20:42:42 | 显示全部楼层

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

使用道具 举报

发表于 2020-4-29 20:43:56 | 显示全部楼层

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

使用道具 举报

发表于 2020-4-29 20:47:37 | 显示全部楼层
输入整数完全没有必要用enterbox(),因为有这个:integerbox(msg='', title=' ', default=None, lowerbound=0, upperbound=99, image=None, root=None)。
如果一定要用enterbox():
import easygui as g
f = g.enterbox()
if f and f.isdigit():
     g.msgbox('您输入的是整数')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-29 20:48:16 From FishC Mobile | 显示全部楼层
加上and进行判断的话,如果输入的是字符串,就直接退出了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 20:49:02 | 显示全部楼层
hehe210417 发表于 2020-4-29 20:48
加上and进行判断的话,如果输入的是字符串,就直接退出了

加个 else 呗,
import easygui as g
f = g.enterbox()
print(f)
if f.isdigit() and f is not None:
        g.msgbox('您输入的是整数')
else:
        g.msgbox('不是整数')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 20:52:05 | 显示全部楼层
呃,代码和5楼一样,其实这个是没有bug的,python在判断条件的时候,如果是and关系,第一个条件为False就不会验证第二个条件,所以不会触发错误,如果反过来if f.isdigit() and f就不行了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 20:57:26 | 显示全部楼层

代码有问题,cancel或关闭窗口就报错了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 21:01:43 | 显示全部楼层
hehe210417 发表于 2020-4-29 20:42
import easygui as g
f = g.enterbox()
if f.isdigit():

import easygui as g
f = g.enterbox()
if f and f.isdigit():
     g.msgbox('您输入的是整数')
elif f:  
     g.msgbox('输入有误,请输入一个整数')
#这样写按cancel或关闭窗口就直接退出,有输入就会判断,不过,用integerbox()不好吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 21:07:17 | 显示全部楼层
hehe210417 发表于 2020-4-29 20:48
加上and进行判断的话,如果输入的是字符串,就直接退出了

但是如果不是整数也会直接退出啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-27 01:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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