Python—easygui之三种输入类函数
导入easgui:
import easygui as g
1.integerbox() 函数
integerbox(msg=’’, title=’ ', default=None, lowerbound=0, upperbound=99, image=None, root=None)
不设置任何参数:
g.integerbox()
默认输入0~99中的一个整数,我们可以修改范围:
msg = '请输入您的幸运数字(0~9):'
title = '幸运测评'
image = '烟花.gif'
g.integerbox(msg, title, lowerbound=0, upperbound=9, image=image)
可以看到输出结果中的输入栏有一个提示符,可以在此输入数字,否则会提示错误:
单击“OK”后返回输入栏重新输入:
这样输入正确吗?
我们来看看:
9.0不是一个整数,是浮点数,所以又提示错误啦。
那如果输入10呢?
超出我们设定好的0~9范围啦。
integerbox() 函数还有个 default 参数,它的作用是什么呢?
g.integerbox(msg, title, default=9, lowerbound=0, upperbound=9, image=image)
显然,它起到输入默认值的作用。运行代码,默认值自动出现在输入栏中,用户可以删除该值,输入他们专属的幸运数字。
2.enterbox() 函数
enterbox(msg=‘Enter something.’, title=’ ‘, default=’’, strip=True, image=None, root=None)
不设置任何参数:
g.enterbox()
这个函数与 integerbox() 函数用法类似,不过不仅仅只能输入整数,可以输入浮点数、字符串等。
msg = '问:猩猩最讨厌什么线?'
title = '脑筋急转弯'
image = '愤怒的猩猩.gif'
g.enterbox(msg, title, image=image)
enterbox() 函数也有 default 参数,它的作用与 integerbox() 函数的一样。
我们可以把答案先设定好,以防忘记:
g.enterbox(msg, title, default='平行线(平行线没有相交(香蕉))', image=image)
还有一个 strip 参数,它的默认值是 True ,那它有什么特别的功能?如果取 False 会怎样?
我们先在设定答案的首尾留出一些空格,再把运行结果分别赋给 answer1 和 answer2 并打印:
answer1 = g.enterbox(msg, title, default=' 平行线(平行线没有相交(香蕉)) ', image=image)
print('strip=True 时的结果:', answer1)
answer2 = g.enterbox(msg, title, default=' 平行线(平行线没有相交(香蕉)) ', strip=False, image=image)
print('strip=False 时的结果:', answer2)
它们的运行结果一样!没有什么区别!!真是如此?
看看打印结果:
所以默认 strip=True 的情况下返回的结果会去除首尾的空格。
3.multenterbox() 函数
multenterbox(msg=‘Fill in values for the fields.’, title=’ ', fields=[], values=[], callback=None, run=True)
multenterbox() 函数不能像以上两个函数一样不设置任何参数,必须设定 fields 参数,否则出现 TypeError: cannot unpack non-iterable NoneType object 的错误。
那就先给 fields 参数赋值:
g.multenterbox(fields=[1, 2, 3, 4])
原来赋给 fields 的列表确定了输入栏的个数与名称。
接下来,尝试给 values 参数赋值:
g.multenterbox(fields=[1, 2, 3, 4], values=[1.23, [1, 2, 3], 'python', '编程'])
我们可以看到 msg=‘Fill in values for the fields.’,那是不是意味着 values 参数里元素的多少不受 fields 影响?
g.multenterbox(fields=[1, 2, 3, 4], values=[1.23, [1, 2, 3], 'python'])
果然如此,但是第四行是空的,因为 values 里没有更多的元素填充进去。
那么类似地, values 参数里的元素也可以比 fields 参数的多:
g.multenterbox(fields=[1, 2, 3, 4], values=[1.23, [1, 2, 3], 'python', '编程', 'A'])
此时,values 的第五个元素溢出了,没有多余的输入栏可填充。
其实 values 参数的原理与 integerbox() 函数和 enterbox() 函数中 default 参数的原理相同,都是事先给定需要输入的默认值,当执行完代码后可以更改它们的内容。
来个例子:
msg = '从1到9哪个数字最勤劳,哪个数字最懒惰?'
title = '又是脑筋急转弯频道'
fields = ['A', 'B', 'C', 'D']
values = [5, 2, 0, 1]
g.multenterbox(msg, title, fields, values)
你的答案是什么?(着什么急,答案就在那儿,不能先思考一会儿吗?不能)
答案揭晓:
你的答案跟我的一样吗?
为什么呢?
因为一不做二不休呀。
希望大家可以做个“2”,但也要时时记得当会儿“1”。
下一篇: python:等考之三