EasyGUI-3:输入数据

目录

1. easygui.enterbox

2. easygui.multenterbox

3. easygui.passwordbox

4. easygui.multpasswordbox

5. easygui.integerbox


1. easygui.enterbox

函数结构如下:

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

字符串单输入框,提供一个字符串输入栏,默认弹框如下:

import easygui

easygui.enterbox()

 

在字符串输入栏中输入随意内容,点击 OK,返回输入内容字符串;点击 Cancel,返回 None;

default 设置输入栏中默认值,设置不为空后,弹出字符串单输入框中默认显示 defalut 设置的内容;

strip 设置为 True,删除输入内容前后的空格;设置为 False,则不作处理;

#字符串输入栏中输入随意内容,点击 OK,返回输入内容字符串
easygui.enterbox('测试消息','测试标题')
'test123 &%#中文你好'

#字符串输入栏中不作输入,点击 OK,返回空字符串
easygui.enterbox()
''

#在字符串输入栏中输入随意内容,点击 Cancel,返回 None
easygui.enterbox('测试消息','测试标题')

#strip 设置为 True,删除输入内容前后的空格
easygui.enterbox('测试消息','测试标题','',True)
'123'

#strip 设置为 False,不作处理
easygui.enterbox('测试消息','测试标题','',False)
'        123         '

#设置 default、image 后的字符串单输入框,如下图
easygui.enterbox('测试消息','测试标题','默认输入为空时,返回此段文字',True,'.\\测试文件\\photo1.png')
'默认输入为空时,返回此段文字'

2. easygui.multenterbox

函数结构如下:

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

字符串多输入框,提供多个字符串输入栏,填写 fields 参数后弹框如下:

import easygui

easygui.multenterbox(fields=['test1','test2'])

在多个字符串输入栏中输入随意内容,点击 OK,返回按输入栏上下顺序组合的输入内容字符串列表;点击 Cancel,返回 None;

fields 为空时报错,默认fields为空列表,因此字符串多输入框需做参数录入,否则报错;

fields 可以输入列表、元组、字符串、range()对象等序列类型数据,集合、字典、数值等则输入报错;

fields 为列表、元组、range()对象时,生成元素数量个数的输入栏,并按序列中元素先后顺序作为输入栏抬头;

fileds 为字符串时,生成字符数量个数的输入栏,并将字符串中单个字符按先后顺序作为输入栏抬头;

#fields 输入数值报错
easygui.multenterbox('测试消息','测试标题',123)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "D:\Anaconda\lib\easygui\boxes\multi_fillable_box.py", line 132, in multenterbox
    mb = MultiBox(msg, title, fields, values, mask_last=False,
  File "D:\Anaconda\lib\easygui\boxes\multi_fillable_box.py", line 183, in __init__
    self.fields, self.values = self.check_fields(fields, values)
  File "D:\Anaconda\lib\easygui\boxes\multi_fillable_box.py", line 234, in check_fields
    if len(fields) == 0:
TypeError: object of type 'int' has no len()

#fields 输入集合报错
easygui.multenterbox('测试消息','测试标题',{'1','2','3'})
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "D:\Anaconda\lib\easygui\boxes\multi_fillable_box.py", line 132, in multenterbox
    mb = MultiBox(msg, title, fields, values, mask_last=False,
  File "D:\Anaconda\lib\easygui\boxes\multi_fillable_box.py", line 183, in __init__
    self.fields, self.values = self.check_fields(fields, values)
  File "D:\Anaconda\lib\easygui\boxes\multi_fillable_box.py", line 237, in check_fields
    fields = list(fields[:])  # convert possible tuples to a list
TypeError: 'set' object is not subscriptable

#fields 输入字典报错
easygui.multenterbox('测试消息','测试标题',{1:2})
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "D:\Anaconda\lib\easygui\boxes\multi_fillable_box.py", line 132, in multenterbox
    mb = MultiBox(msg, title, fields, values, mask_last=False,
  File "D:\Anaconda\lib\easygui\boxes\multi_fillable_box.py", line 183, in __init__
    self.fields, self.values = self.check_fields(fields, values)
  File "D:\Anaconda\lib\easygui\boxes\multi_fillable_box.py", line 237, in check_fields
    fields = list(fields[:])  # convert possible tuples to a list
TypeError: unhashable type: 'slice'

#fields 输入字符串,按字符数生成6个输入栏,单个字符依次作为输入栏抬头
easygui.multenterbox('测试消息','测试标题','12ab中文')
['111', '222', 'AAA', 'BBB', '中中中', '文文文']

#fields 输入 range() 对象,按元素数生成5个输入栏,元素依次作为输入栏抬头
easygui.multenterbox('测试消息','测试标题',range(5))
['TEST1**', '2test13213', '中文测试3', '《》?《》[][\\123&*(*&', '        567']

#fields 输入列表对象,按元素数生成3个输入栏,元素依次作为输入栏抬头
easygui.multenterbox('测试消息','测试标题',['测试姓名','测试性别',123])
['张三', '男', '321']

#fields 输入元组对象,按元素数生成3个输入栏,元素依次作为输入栏抬头,如下图
easygui.multenterbox('测试消息','测试标题',('测试姓名','测试性别',['a','b','c']))
['李四', 'asdfsalkjljklasdf', '[1,2,3]']

value 为各个输入栏的默认值,可以输入列表、元组、字符串、range()对象等序列类型数据;

value 为列表、元组、range()对象时,按序列中元素先后顺序作为输入栏默认值;

value 为字符串时,字符串中单个字符按先后顺序作为输入栏默认值;

value 中元素数/字符数少于 fields 生成的输入栏时,则从上至下填充部分输入栏为默认值,剩下输入栏默认值为空;

value 中元素数/字符数多于 fields 生成的输入栏时,则从上至下填充所有输入栏后,value 中其他多余的元素/字符无效;

#value 输入 range() 对象,填充两个输入栏为默认值,剩下输入栏默认值为空
easygui.multenterbox('测试消息','测试标题',('测试姓名','测试年龄','测试信息'),range(2))
['0', '1', '']

#value 输入 range() 对象,填充所有输入栏为默认值,value 中其他多余的元素无效
easygui.multenterbox('测试消息','测试标题',('测试姓名','测试年龄','测试信息'),range(4))
['0', '1', '2']

#value 输入字符串对象,字符串中单个字符按先后顺序作为输入栏默认值
easygui.multenterbox('测试消息','测试标题',('测试姓名','测试年龄','测试信息'),'aB%')
['a', 'B', '%']

#value 输入元组对象,按序列中元素先后顺序作为输入栏默认值
easygui.multenterbox('测试消息','测试标题',('测试姓名','测试年龄','测试信息'),('李四',8.1,[1,2,3]))
['李四', '8.1', '[1, 2, 3]']

#value 输入列表对象,按序列中元素先后顺序作为输入栏默认值,value 中其他多余的元素无效,如下图
easygui.multenterbox('测试消息','测试标题',('测试姓名','测试年龄','测试信息'),['张三',18,('test','中文',567),'多出来的','再来一点'])
['张三', '18', "('test', '中文', 567)"]

3. easygui.passwordbox

函数结构如下:

passwordbox(msg="Enter your password.", title=" ", default="", image=None, root=None)

密码单输入框,提供一个字符串输入栏,输入内容用星号 '*' 显示,默认弹框如下:

import easygui

easygui.passwordbox()

easygui.passwordbox 各参数使用参考1. easygui.enterbox ,区别在于没有strip参数,同时输入内容显示为 '*';

在字符串输入栏中输入随意内容,点击 OK,返回输入内容字符串;点击 Cancel,返回 None。

#配置各个参数,弹框如下图
easygui.passwordbox('测试消息','测试标题','默认密码','.\\测试文件\\photo2.png')
'默认密码'

4. easygui.multpasswordbox

函数结构如下:

multpasswordbox(msg="Fill in values for the fields.", title=" ", fields=tuple(), values=tuple(), callback=None, run=True)

密码多输入框,提供多个字符串输入栏,输入内容用星号 '*' 显示,填写 fields 参数后弹框如下:

import easygui

easygui.multpasswordbox(fields=['test1','test2'])

easygui.multpasswordbox 个参数使用参见2. easygui.multenterbox ,区别在于最后一栏为密码输入栏,输入内容显示为 '*';

在多个字符串输入栏中输入随意内容,点击 OK,返回按输入栏上下顺序组合的输入内容字符串列表;点击 Cancel,返回 None。

#配置各个参数,弹框如下图
easygui.multpasswordbox('测试消息','测试标题',('测试姓名','测试年龄','测试密码'),['张三',18,('test','中文',567),'多出来的','再来一点'])
['张三', '18', "('test', '中文', 567)"]

5. easygui.integerbox

函数结构如下:

integerbox(msg="", title=" ", default=None, lowerbound=0, upperbound=99, image=None, root=None)

整形数值输入框,提供一个整形数值输入栏,并可对数值上下限做限制,默认弹框如下:

import easygui

easygui.integerbox()

在整型数值数入栏中输入整型数值,点击 OK,符合上下限限制则返回输入数值的整型数据;点击 Cancel,返回 None;

输入数据超过上下限,则弹框提示,点击 OK 后返回输入界面重新输入,如下:

 

输入非整型数值的字符、浮点数、复数,则弹框提示,点击 OK 后返回输入界面重新输入,如下:

default 为默认数值,会将设置数据转换为整型数值,因此可以输入整型数值、整型数值的字符串,输入浮点数则保留整数部分;如输入非数值字符串、复数等则报错;

lowerbound、upperbound 为输入数值的上下限数值,输入的数值需要 lowerbound ≤ inputinteger ≤ upperbound ;

lowerbound、upperbound 会将设置数据转换为整型数值,与 default 操作类似;

lowerbound、upperbound 可以设置为 None,则不再控制相应上下限;

#配置各项参数,如下图
test_lower = '5'
test_upper = 12
test_defalut = 7.5

easygui.integerbox(f'测试消息\n默认值:{str(test_defalut)}\n输入上限:{str(test_lower)}\n输入下限:{str(test_upper)}',
...                    '测试标题',test_defalut,test_lower,test_upper,'.\\测试文件\\photo3.png')   
7


版权声明:本文为davidksatan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。