小甲鱼第35讲问题求助
import easygui as gmsg = "请填写以下联系方式"
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为空,直接退出循环吗 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'> 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]