藤泽新社 发表于 2020-8-6 16:01:51

python easygui 代码求助

本帖最后由 藤泽新社 于 2020-8-6 17:40 编辑

想问问大佬这段里有哪些错误啊

#打开easygui
import easygui as g

#第一界面 *用户名*真实姓名   固定电话*手机号码   QQ*E-mail
msg = '请填写以下信息(打※必填)'
title = '信息记录'
fieldleft = ['*用户名','*真实姓名','固定电话','*手机号码','QQ','*E-mail']
fieldright = []
fieldright = g.multenterbox(msg,title,fieldleft)

#循环如果是带 * 号的必填项,要求一定要有输入并且不能是空格
#三种情况 1离开 2*没填 输入为空格 3正常输入
while 1:
    if fieldright == None :
      g.msgbox('再见')
      break

    err = ''
    for in range(len(fieldleft)):
      flag = fieldleft.strip()
      if fieldright.strip() == '' and flag== '*':
            err += ('%s是必填项不能为空 \n\n' % fieldleft)
    if err == '':
      break
    fieldright = g.multenterbox(msg,title,fieldleft)

fieldprint = []
for in range(len(fieldleft)):
    fieldprint += (fieldleft,':',fieldright,'\n\n')
   
print('您的信息为',fieldprint)
      

Twilight6 发表于 2020-8-6 17:48:09

本帖最后由 Twilight6 于 2020-8-6 17:49 编辑



for 循环 i 不能写成 [ i]

第二个的 fieldright 的 msg属性应该是 err 而不是 msg

# 打开easygui
import easygui as g

# 第一界面 *用户名*真实姓名   固定电话*手机号码   QQ*E-mail
msg = '请填写以下信息(打※必填)'
title = '信息记录'
fieldleft = ['*用户名', '*真实姓名', '固定电话', '*手机号码', 'QQ', '*E-mail']
fieldright = g.multenterbox(msg, title, fieldleft)

# 循环如果是带 * 号的必填项,要求一定要有输入并且不能是空格
# 三种情况 1离开 2*没填 输入为空格 3正常输入
while 1:
    if fieldright == None:
      g.msgbox('再见')
      break

    err = ''
    for i in range(len(fieldleft)):
      flag = fieldleft.strip()
      if fieldright.strip() == '' and flag == '*':
            err += ('%s是必填项不能为空 \n\n' % fieldleft)
    if err == '':
      break
    fieldright = g.multenterbox(err, title, fieldleft)

fieldprint = []
for i in range(len(fieldleft)):
    fieldprint += (fieldleft, ':', fieldright, '\n\n')

print('您的信息为', fieldprint)

sunrise085 发表于 2020-8-6 18:07:08

本帖最后由 sunrise085 于 2020-8-6 18:08 编辑

第18、24、26、27、28行小问题进行了修改,并分别进行了注释。

import easygui as g

#第一界面 *用户名*真实姓名   固定电话*手机号码   QQ*E-mail
msg = '请填写以下信息(打※必填)'
title = '信息记录'
fieldleft = ['*用户名','*真实姓名','固定电话','*手机号码','QQ','*E-mail']
fieldright = []
fieldright = g.multenterbox(msg,title,fieldleft)

#循环如果是带 * 号的必填项,要求一定要有输入并且不能是空格
#三种情况 1离开 2*没填 输入为空格 3正常输入
while 1:
    if fieldright == None :
      g.msgbox('再见')
      break

    err = ''
    for i in range(len(fieldleft)):#错误1、for循环的i是个临时变量,不能放在[ ]内,变量名中不能有中括号
      flag = fieldleft.strip()
      if fieldright.strip() == '' and flag== '*':
            err += ('%s是必填项不能为空 \n\n' % fieldleft)
    if err == '':
      break
    fieldright = g.multenterbox(err,title,fieldleft,fieldright)#可以改进1、第一个参数应该写err,不该再写msg,另外应该把value加上,已经填写过的内容就不用重复输入了

fieldprint = '' #可以改进2、fieldprint直接写成字符串,会更好看一些
for i in range(len(fieldleft)):#这里和18行错误一样
    fieldprint += fieldleft+':'+fieldright+'\n' #可以改进3、这里结合上面的定义进行了简单修改
   
print('您的信息为:\n',fieldprint)
页: [1]
查看完整版本: python easygui 代码求助