欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python—easygui之三种输入类函数

程序员文章站 2022-07-12 10:01:38
...
导入easgui
import easygui as g

1.integerbox() 函数

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

不设置任何参数:

g.integerbox()

Python—easygui之三种输入类函数
默认输入0~99中的一个整数,我们可以修改范围:

msg = '请输入您的幸运数字(0~9):'
title = '幸运测评'
image = '烟花.gif'
g.integerbox(msg, title, lowerbound=0, upperbound=9, image=image)

Python—easygui之三种输入类函数
可以看到输出结果中的输入栏有一个提示符,可以在此输入数字,否则会提示错误:
Python—easygui之三种输入类函数
单击“OK”后返回输入栏重新输入:
Python—easygui之三种输入类函数
这样输入正确吗?

我们来看看:
Python—easygui之三种输入类函数
9.0不是一个整数,是浮点数,所以又提示错误啦。

那如果输入10呢?
Python—easygui之三种输入类函数
超出我们设定好的0~9范围啦。

integerbox() 函数还有个 default 参数,它的作用是什么呢?

g.integerbox(msg, title, default=9, lowerbound=0, upperbound=9, image=image)

Python—easygui之三种输入类函数
显然,它起到输入默认值的作用。运行代码,默认值自动出现在输入栏中,用户可以删除该值,输入他们专属的幸运数字。

2.enterbox() 函数

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

不设置任何参数:

g.enterbox()

Python—easygui之三种输入类函数
这个函数与 integerbox() 函数用法类似,不过不仅仅只能输入整数,可以输入浮点数、字符串等。

msg = '问:猩猩最讨厌什么线?'
title = '脑筋急转弯'
image = '愤怒的猩猩.gif'
g.enterbox(msg, title, image=image)

Python—easygui之三种输入类函数
enterbox() 函数也有 default 参数,它的作用与 integerbox() 函数的一样。

我们可以把答案先设定好,以防忘记:

g.enterbox(msg, title, default='平行线(平行线没有相交(香蕉))', image=image)

Python—easygui之三种输入类函数
还有一个 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)

Python—easygui之三种输入类函数
它们的运行结果一样!没有什么区别!!真是如此?

看看打印结果:
Python—easygui之三种输入类函数
所以默认 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])

Python—easygui之三种输入类函数
原来赋给 fields 的列表确定了输入栏的个数与名称。

接下来,尝试给 values 参数赋值:

g.multenterbox(fields=[1, 2, 3, 4], values=[1.23, [1, 2, 3], 'python', '编程'])

Python—easygui之三种输入类函数
我们可以看到 msg=‘Fill in values for the fields.’,那是不是意味着 values 参数里元素的多少不受 fields 影响?

g.multenterbox(fields=[1, 2, 3, 4], values=[1.23, [1, 2, 3], 'python'])

Python—easygui之三种输入类函数
果然如此,但是第四行是空的,因为 values 里没有更多的元素填充进去。

那么类似地, values 参数里的元素也可以比 fields 参数的多:

g.multenterbox(fields=[1, 2, 3, 4], values=[1.23, [1, 2, 3], 'python', '编程', 'A'])

Python—easygui之三种输入类函数
此时,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)

Python—easygui之三种输入类函数
你的答案是什么?(着什么急,答案就在那儿,不能先思考一会儿吗?能)

答案揭晓:
Python—easygui之三种输入类函数
你的答案跟我的一样吗?

为什么呢?
因为一不做二不休呀。

希望大家可以做个“2”,但也要时时记得当会儿“1”。

相关标签: python