code: def multpasswordbox(msg="Fill in values for the fields."
      , title=" "
      , fields=tuple()
      ,values=tuple()
      ):
      r
      return __multfillablebox(msg,title,fields,values,"*")
docs: r"""
      Same interface as multenterbox.  But in multpassword box,
      the last of the fields is assumed to be a password, and
      is masked with asterisks.
  
      Example
      =======
  
      Here is some example code, that shows how values returned from
      multpasswordbox can be checked for validity before they are accepted::
          msg = "Enter logon information"
          title = "Demo of multpasswordbox"
          fieldNames = ["Server ID", "User ID", "Password"]
          fieldValues = []  # we start with blanks for the values
          fieldValues = multpasswordbox(msg,title, fieldNames)
  
          # make sure that none of the fields was left blank
          while 1:
              if fieldValues == None: break
              errmsg = ""
              for i in range(len(fieldNames)):
                  if fieldValues[i].strip() == "":
                      errmsg = errmsg + ('"%s" is a required field.\n\n' % fieldNames[i])
                  if errmsg == "": break # no problems found
              fieldValues = multpasswordbox(errmsg, title, fieldNames, fieldValues)
  
          writeln("Reply was: %s" % str(fieldValues))