鱼C论坛

 找回密码
 立即注册
查看: 1536|回复: 6

[已解决]代码意义不理解,求助高手!

[复制链接]
发表于 2020-10-24 22:57:05 | 显示全部楼层 |阅读模式

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

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

x
import easygui as g

msg = "请填写以下联系方式"
title = "账号中心"
fieldNames = [" *用户名", " *真实姓名", "  固定电话", " *手机号码", "  QQ", " *E-mail"]
fieldValues = []
fieldValues = g.multenterbox(msg, title, fieldNames)

while 1:
    if fieldValues == None:
        break
    errmsg = ""
    for i in range(len(fieldNames)):
        option = fieldNames[i].strip()
        if fieldValues[i].strip() == "" and option[0] == "*":
            errmsg += ('【%s】为必填项。\n\n' % fieldNames[i])
    if errmsg == "":
        break
    fieldValues = g.multenterbox(errmsg, title, fieldNames, fieldValues)

print("用户资料如下:%s" % str(fieldValues))
   
最佳答案
2020-10-25 10:33:37
  1. import easygui as g

  2. msg = "请填写以下联系方式" # 设置文字
  3. title = "账号中心" # 设置标题
  4. fieldNames = [" *用户名", " *真实姓名", "  固定电话", " *手机号码", "  QQ", " *E-mail"] # 设置输入框的对应文字
  5. fieldValues = []
  6. fieldValues = g.multenterbox(msg, title, fieldNames) # 创建输入框

  7. while 1: # 重复循环
  8.     if fieldValues == None: # 如果里面的所有输入框是空的
  9.         break # 跳出循环
  10.     errmsg = ""

  11.     # 设置提醒项
  12.     for i in range(len(fieldNames)):
  13.         option = fieldNames[i].strip()
  14.         if fieldValues[i].strip() == "" and option[0] == "*":
  15.             errmsg += ('【%s】为必填项。\n\n' % fieldNames[i])
  16.     if errmsg == "":
  17.         break

  18.     fieldValues = g.multenterbox(errmsg, title, fieldNames, fieldValues) # 重新新建一个有提醒的输入框

  19. print("用户资料如下:%s" % str(fieldValues))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-25 10:33:37 | 显示全部楼层    本楼为最佳答案   
  1. import easygui as g

  2. msg = "请填写以下联系方式" # 设置文字
  3. title = "账号中心" # 设置标题
  4. fieldNames = [" *用户名", " *真实姓名", "  固定电话", " *手机号码", "  QQ", " *E-mail"] # 设置输入框的对应文字
  5. fieldValues = []
  6. fieldValues = g.multenterbox(msg, title, fieldNames) # 创建输入框

  7. while 1: # 重复循环
  8.     if fieldValues == None: # 如果里面的所有输入框是空的
  9.         break # 跳出循环
  10.     errmsg = ""

  11.     # 设置提醒项
  12.     for i in range(len(fieldNames)):
  13.         option = fieldNames[i].strip()
  14.         if fieldValues[i].strip() == "" and option[0] == "*":
  15.             errmsg += ('【%s】为必填项。\n\n' % fieldNames[i])
  16.     if errmsg == "":
  17.         break

  18.     fieldValues = g.multenterbox(errmsg, title, fieldNames, fieldValues) # 重新新建一个有提醒的输入框

  19. print("用户资料如下:%s" % str(fieldValues))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-25 12:45:45 | 显示全部楼层
本帖最后由 深山小兽 于 2020-10-25 12:48 编辑


是这个意思,不过我尝试运行代码,什么都不输入,点击OK后,程序并没有跳出循环。还是不停运行。请问是什么原因
  1. 就是while1:下的第一个if语句不明白在源代码中起什么作用
  2. while 1:
  3.     if fieldValues == None:
  4.         break


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

使用道具 举报

发表于 2020-10-25 15:33:36 | 显示全部楼层
深山小兽 发表于 2020-10-25 12:45
是这个意思,不过我尝试运行代码,什么都不输入,点击OK后,程序并没有跳出循环。还是不停运行。请问是 ...

这可能跟easygui的机制有关

fieldValues = None时应该是用户点击了cancel才会这样跳出循环
而点OK后就等于空字符串"",而没有进入第一个分支
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-25 15:50:53 | 显示全部楼层
冰河星云 发表于 2020-10-25 15:33
这可能跟easygui的机制有关

fieldValues = None时应该是用户点击了cancel才会这样跳出循环

好的谢谢,不过这样的话是不是就不需要这一行代码了呢,感觉没有任何意义!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-25 15:52:51 | 显示全部楼层
深山小兽 发表于 2020-10-25 15:50
好的谢谢,不过这样的话是不是就不需要这一行代码了呢,感觉没有任何意义!

还是需要的,如果用户点击了cancel就会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-25 16:02:11 | 显示全部楼层
冰河星云 发表于 2020-10-25 15:52
还是需要的,如果用户点击了cancel就会报错

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 16:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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