灵魂溢出 发表于 2020-11-8 21:35:54

小甲鱼第35讲问题求助

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.strip()
      if fieldValues.strip() == "" and option == "*":
            errmsg += ('【%s】为必填项。\n\n' % fieldNames)
    if errmsg == "":
      break
    fieldValues = g.multenterbox(errmsg, title, fieldNames, fieldValues)

print("用户资料如下:%s" % str(fieldValues))
这里面的while 1:
    if fieldValues == None:
      break
这个,不应该是我没有输入任何值的时候,fieldValues为空,直接退出循环吗

笨鸟学飞 发表于 2020-11-9 12:13:34

None和空列表是2种不同的类型:
==========直接点右上角的‘X’==============
>>> a = g.multenterbox(msg='Fill in values for the fields.', title=' ', fields=fidlds, values=[], callback=None, run=True)
>>> type(a)
<class 'NoneType'>
==========不输入任何内容直接点OK==============
>>> a = g.multenterbox(msg='Fill in values for the fields.', title=' ', fields=fidlds, values=[], callback=None, run=True)
>>> type(a)
<class 'list'>

qin_yin 发表于 2020-11-10 13:12:22

while 1:
    if fieldValues == None:
      break
这是当你点击取消Cancle或追关闭窗口(右上角的的X)跳出循环,因为这两种情况返回值就None,你点击ok的返回的时候fieldValues返回的时候一个空列表,所以它不会成立.
import easygui as g
想要实现你说的那样,不难

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

while 1:
    errmsg = ''
    spack = 0#记录未填项
    if fieldValues == None:   
      break
    for i in range(len(fieldNames)):
      
      option = fieldNames.strip()
      
      if fieldValues == '':   #如果当前下标元素为空
            spack += 1
               
      if fieldValues.strip() == "" and option == "*":
            errmsg += ('【%s】为必填项。\n\n' % fieldNames)
      

            
    if spack == len(fieldValues):   #spack 记录着fieldValues有多少项未填写项,如果未填项数量等于填写项数量,那么就判断所有填写项都为空
      print('全为空')
      break
      
    if errmsg == "":
      print('errmsg跳出循环')
      break
    fieldValues = g.multenterbox(errmsg, title, fieldNames, fieldValues)


print("用户资料如下:%s" % str(fieldValues))
页: [1]
查看完整版本: 小甲鱼第35讲问题求助