在少儿编程中使用easygui(3):enterbox和multenterbox

在上一篇文章中,我们使用textbox接收用户输入多行的文字。如果需要接收用户单行输入,或者接收用户多种类型的单行数据输入,则可以分别使用enterbox和multenterbox。

enterbox的函数原型是:

  1. enterbox(msg='Enter something.',title=' ',default='',strip=True,image=None,root=None)

其中msg和title的含义和前面两个组件的含义一样。第三个参数是输入框中的默认值。strip用于设置是否去除返回的输入字符串前后的空格。image可以用于给这个对话框添加一张图片,它将会在提示信息和输入框之间添加一个图片组件。

下面我们来看一个enterbox的示例。

  1. from easygui import *
  2. name = enterbox("请输入您的姓名","个人信息","",True,"python.png")
  3. print(name)

它的运行结果如下:

添加的图片将按照图片原始大小显示。如果在文本框中输入的值前后有空格,因为程序中将strip参数设置成了True,所以将会被去掉。也可以直接访问下面地址查看运行效果。
https://www.cncoding.cn/python/public_133951
如果需要一次性输入多个值,则可以使用multenterbox(),它的原型如下:

  1. multenterbox(msg='Fill in values for the fields.',title=' ',fields=[],values=[],callback=None,run=True)

其中fields是输入框前的提示标签文字,以列表形式指定;values是各个输入框的默认值,也以列表形式指定,values的元素个数可以和fields中的不同;callback为点击对话框上的OK按钮之后的回调函数。run为是否打开显示这个对话框,如果为False,只会创建这个multenterbox()对象,而不会显示它。(说实话我现在也没想明白它用在什么场合)

这里用一个官方的案例来作为示例,说明它的用法:

  1. from easygui import *
  2. class Demo2():
  3. def __init__(self):
  4. msg = "Without flicker. Enter your personal information"
  5. title = "Credit Card Application"
  6. fieldNames = ["Name", "Street Address", "City", "State", "ZipCode"]
  7. fieldValues = [] # we start with blanks for the values
  8. fieldValues = multenterbox(msg, title, fieldNames, fieldValues,
  9. callback=self.check_for_blank_fields)
  10. print("Reply was: {}".format(fieldValues))
  11. def check_for_blank_fields(self, box):
  12. # make sure that none of the fields was left blank
  13. cancelled = box.values is None
  14. errors = []
  15. if cancelled:
  16. pass
  17. else: # check for errors
  18. for name, value in zip(box.fields, box.values):
  19. if value.strip() == "":
  20. errors.append('"{}" is a required field.'.format(name))
  21. all_ok = not errors
  22. if cancelled or all_ok:
  23. box.stop() # no problems found
  24. box.msg = "\n".join(errors)
  25. Demo2()

其初始运行效果如下:

可以访问以下链接直接运行查看结果。
https://www.cncoding.cn/python/public_133052
和enterbox()类似的还有两个用于特殊用途的单行输入对话框:passwordbox用于接收输入密码,integerbox用于接收用户数字输入;和multenterbox类似的有multpasswordbox,它和multenterbox非常类似,只是多个输入框中最后一个输入框,用于输入密码,其他用法和multenterbox基本一样,此处不再赘述。

微信扫一扫,分享此文章

少儿编程教学平台

联系我们

微信

aguibo002

邮箱

haoxuehaojiao在163.com

Loading
我们已经收到您的信息,将尽快联系您!