鱼C论坛

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

[已解决]如何理解有关multenterbox代码

[复制链接]
发表于 2018-8-14 19:09:23 | 显示全部楼层 |阅读模式
10鱼币
sp180814_190647.png


  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.     for i in range(len(fieldNames)):
  12.         option = fieldNames[i].strip()
  13.         if fieldValues[i].strip() == "" and option[0] == "*":
  14.             errmsg += ('【%s】为必填项。\n\n' % fieldNames[i])
  15.     if errmsg == "":
  16.         break
  17.     fieldValues = g.multenterbox(errmsg, title, fieldNames, fieldValues)

  18. print("用户资料如下:%s" % str(fieldValues))
复制代码
最佳答案
2018-8-14 19:09:24
  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.     for i in range(len(fieldNames)):#
  12.         option = fieldNames[i].strip()#去除空格
  13.         if fieldValues[i].strip() == "" and option[0] == "*":#假如有项目为空并且此项目必填(有星号)
  14.             errmsg += ('【%s】为必填项。\n\n' % fieldNames[i])#构建错误信息
  15.     if errmsg == "":#假如没有错误信息(即上面那句没有执行)
  16.         break#跳出循环,显示信息
  17.     fieldValues = g.multenterbox(errmsg, title, fieldNames, fieldValues)#假如还没有跳出循环(有东西没有填),就继续显示。

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

使用道具 举报

发表于 2018-8-14 19:09:24 | 显示全部楼层    本楼为最佳答案   
  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.     for i in range(len(fieldNames)):#
  12.         option = fieldNames[i].strip()#去除空格
  13.         if fieldValues[i].strip() == "" and option[0] == "*":#假如有项目为空并且此项目必填(有星号)
  14.             errmsg += ('【%s】为必填项。\n\n' % fieldNames[i])#构建错误信息
  15.     if errmsg == "":#假如没有错误信息(即上面那句没有执行)
  16.         break#跳出循环,显示信息
  17.     fieldValues = g.multenterbox(errmsg, title, fieldNames, fieldValues)#假如还没有跳出循环(有东西没有填),就继续显示。

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

使用道具 举报

 楼主| 发表于 2018-8-14 19:26:39 | 显示全部楼层

老哥,谢了!我就是卡在了break上,尤其是第一个break上的语句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-14 19:27:32 | 显示全部楼层
Brucey 发表于 2018-8-14 19:26
老哥,谢了!我就是卡在了break上,尤其是第一个break上的语句

不用谢~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-14 19:28:31 | 显示全部楼层
multenterbox(msg='Fill in values for the fields.', title=' ', fields=[], values=[], callback=None, run=True)
multenterbox() 为用户提供多个简单的输入框,要注意以下几点:
如果用户输入的值比选项少的话,则返回列表中的值用空字符串填充用户为输入的选项。
如果用户输入的值比选项多的话,则返回的列表中的值将截断为选项的数量。
如果用户取消操作,则返回域中的列表的值或者 None 值。

这里fieldNames相当于tkinter的label标签的列表,一次传入多个label文本
fieldValues是文本框多行输入的列表,没输入默认设置为空

这里while 1循环实际就是捕捉用户输入,当有输入时,fieldValues就不为空
errmsg只是用来判断必填项是否有内容,并给出提示信息
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-27 14:20:56 | 显示全部楼层

很棒,你的注释有助于理解!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 11:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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