鱼C论坛

 找回密码
 立即注册
查看: 2566|回复: 5

[已解决]easygui模块问题求助

[复制链接]
发表于 2020-11-8 17:25:20 | 显示全部楼层 |阅读模式

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

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

x
  1. import easygui as g
  2. import random
  3. secret = random.randint(1,10)
  4. g.msgbox("------------------我爱你...个鬼------------------")
  5. msg = "不妨猜一下我现在心里想的是哪个数字:"
  6. temp = g.integerbox(msg,lowerbound = 1,upperbound = 10)
  7. while 1:
  8.     if temp == None:
  9.         temp = g.integerbox("请输入数字",lowerbound = 1,upperbound = 10)
  10.     else:
  11.         break
  12. while temp != secret:
  13.     msg ="哎呀,猜错了,请重新输入吧:"
  14.     temp = g.integerbox(msg,lowerbound = 1,upperbound = 10)

  15.     if temp == secret:
  16.         g.msgbox("我草,你是我心里的蛔虫吗?")
  17.         g.msgbox("哼,猜中了也没有奖励!")
  18.     else:
  19.         while 1:
  20.             if temp == None:
  21.                 temp = g.integerbox("请输入数字", lowerbound=1, upperbound=10)
  22.             else:
  23.                 break
  24.         if temp > secret:
  25.             g.msgbox("哥,大了大了~~~")
  26.         else:
  27.             g.msgbox("嘿,小了小了~~~")
  28. g.msgbox("不玩了")
复制代码

我对小甲鱼的代码进行了修改,本意是如果用户没有输入数字,则提醒他输入,但是却导致不运行到底就无法结束,求大神修改,可以直接点击X关闭程序
最佳答案
2020-11-8 19:20:42
灵魂溢出 发表于 2020-11-8 19:00
这个不是小甲鱼原来的代码吗
我要的是那种能够在没有输入的时候提醒用户重新输入

重新看了下 easygui 的文档,把 integerbox 组件改成 enterbox 组件输入

但是不会自动检查范围,你可以自己重新写出这个功能

参考代码:


  1. import easygui as g
  2. import random

  3. secret = random.randint(1,10)
  4. g.msgbox("------------------我爱你...个鬼------------------")
  5. msg = "不妨猜一下我现在心里想的是哪个数字:"
  6. temp = g.enterbox(msg)
  7. while temp.strip() == '':
  8.     msg = '注意!您还没输入数字~'
  9.     g.msgbox(msg)
  10.     temp = g.enterbox("不妨猜一下我现在心里想的是哪个数字:")

  11. while temp != str(secret):
  12.     msg ="哎呀,猜错了,请重新输入吧:"
  13.     temp = g.enterbox(msg)
  14.     while temp.strip() == '':
  15.         msg = '注意!您还没输入数字~'
  16.         g.msgbox(msg)
  17.         temp = g.enterbox("不妨猜一下我现在心里想的是哪个数字:")
  18.     if temp == None:
  19.         break
  20.     if temp == str(secret):
  21.         g.msgbox("我草,你是我心里的蛔虫吗?")
  22.         g.msgbox("哼,猜中了也没有奖励!")
  23.         break
  24.     elif temp > str(secret):
  25.         g.msgbox("哥,大了大了~~~")
  26.     else:
  27.         g.msgbox("嘿,小了小了~~~")

  28. g.msgbox("不玩了")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-8 18:15:39 | 显示全部楼层

easygui 的 integerbox 组件是你点 X 的时候返回的是 None,点 OK 时候会判断你输入框内的值是否在上下限内

若不在,则组件自动会叫你重新输入此时不会返回值,所以不需要你进行循环重新判断

参考代码:

  1. import easygui as g
  2. import random

  3. secret = random.randint(1,10)
  4. g.msgbox("------------------我爱你...个鬼------------------")
  5. msg = "不妨猜一下我现在心里想的是哪个数字:"
  6. temp = g.integerbox(msg,lowerbound = 1,upperbound = 10)

  7. while temp != secret:
  8.     msg ="哎呀,猜错了,请重新输入吧:"
  9.     temp = g.integerbox(msg,lowerbound = 1,upperbound = 10)
  10.     if temp == None:
  11.         break
  12.     if temp == secret:
  13.         g.msgbox("我草,你是我心里的蛔虫吗?")
  14.         g.msgbox("哼,猜中了也没有奖励!")
  15.         break
  16.     elif temp > secret:
  17.         g.msgbox("哥,大了大了~~~")
  18.     else:
  19.         g.msgbox("嘿,小了小了~~~")
  20.         
  21. g.msgbox("不玩了")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-8 19:00:08 | 显示全部楼层
Twilight6 发表于 2020-11-8 18:15
easygui 的 integerbox 组件是你点 X 的时候返回的是 None,点 OK 时候会判断你输入框内的值是否在上下限 ...

这个不是小甲鱼原来的代码吗
我要的是那种能够在没有输入的时候提醒用户重新输入
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-8 19:05:17 | 显示全部楼层
灵魂溢出 发表于 2020-11-8 19:00
这个不是小甲鱼原来的代码吗
我要的是那种能够在没有输入的时候提醒用户重新输入



这只是删了几个你原先代码的几个错误点,并不是直接拷贝甲鱼哥代码的

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-8 19:20:42 | 显示全部楼层    本楼为最佳答案   
灵魂溢出 发表于 2020-11-8 19:00
这个不是小甲鱼原来的代码吗
我要的是那种能够在没有输入的时候提醒用户重新输入

重新看了下 easygui 的文档,把 integerbox 组件改成 enterbox 组件输入

但是不会自动检查范围,你可以自己重新写出这个功能

参考代码:


  1. import easygui as g
  2. import random

  3. secret = random.randint(1,10)
  4. g.msgbox("------------------我爱你...个鬼------------------")
  5. msg = "不妨猜一下我现在心里想的是哪个数字:"
  6. temp = g.enterbox(msg)
  7. while temp.strip() == '':
  8.     msg = '注意!您还没输入数字~'
  9.     g.msgbox(msg)
  10.     temp = g.enterbox("不妨猜一下我现在心里想的是哪个数字:")

  11. while temp != str(secret):
  12.     msg ="哎呀,猜错了,请重新输入吧:"
  13.     temp = g.enterbox(msg)
  14.     while temp.strip() == '':
  15.         msg = '注意!您还没输入数字~'
  16.         g.msgbox(msg)
  17.         temp = g.enterbox("不妨猜一下我现在心里想的是哪个数字:")
  18.     if temp == None:
  19.         break
  20.     if temp == str(secret):
  21.         g.msgbox("我草,你是我心里的蛔虫吗?")
  22.         g.msgbox("哼,猜中了也没有奖励!")
  23.         break
  24.     elif temp > str(secret):
  25.         g.msgbox("哥,大了大了~~~")
  26.     else:
  27.         g.msgbox("嘿,小了小了~~~")

  28. g.msgbox("不玩了")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-8 21:31:47 | 显示全部楼层
Twilight6 发表于 2020-11-8 19:20
重新看了下 easygui 的文档,把 integerbox 组件改成 enterbox 组件输入

但是不会自动检查范围,你可 ...

如果用strip()的方法的话,可以接着用integerbox组件,直接把循环判断是否输入为空改为temp.strip()就可以了,这就是我最初想要的效果了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-29 08:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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