pywebio.input
— Get input from web browser¶
从浏览器接收用户输入
本模块提供了一系列函数来从浏览器接收用户不同的形式的输入
输入函数大致分为两类,一类是单项输入:
name = input("What's your name")
print("Your name is %s" % name)
另一类是使用 input_group
的输入组:
info = input_group("User info",[
input('Input your name', name='name'),
input('Input your age', name='age', type=NUMBER)
])
print(info['name'], info['age'])
输入组中需要在每一项输入函数中提供 name
参数来用于在结果中标识不同输入项.
注解
PyWebIO 根据是否在输入函数中传入 name
参数来判断输入函数是在 input_group
中还是被单独调用。
所以当你想要单独调用一个输入函数时,请不要设置 name
参数;而在 input_group
中调用输入函数时,务必提供 name
参数
输入默认可以忽略,如果需要用户必须提供值,则需要在输入函数中传入 required=True
( checkbox()` 和 `acrions()` 不支持 ``required
参数)
-
pywebio.input.
actions
(label='', buttons=None, name=None, help_text=None)[源代码]¶ 按钮选项。 在浏览器上显示为一组按钮,与其他输入组件不同,用户点击按钮后会立即将整个表单提交(除非设置按钮的
type='reset'
), 而其他输入组件则需要手动点击表单的”提交”按钮。当
actions()
作为input_group()
的inputs
中最后一个输入项时,表单默认的提交按钮会被当前actions()
替换。- 参数
buttons (list) –
选项列表。列表项的可用形式有:
dict:
{label:选项标签, value:选项值, [type: 按钮类型], [disabled:是否禁止选择]}
. 若type='reset'/'cancel'
或disabled=True
可省略value
tuple or list:
(label, value, [type], [disabled])
单值: 此时label和value使用相同的值
type
可选值为:'submit'
: 点击按钮后,将整个表单提交。'submit'
为type
的默认值'cancel'
: 取消输入。点击按钮后,actions()
将直接返回None
'reset'
: 点击按钮后,将整个表单重置,输入项将变为初始状态。 注意:点击type=reset
的按钮后,并不会提交表单,actions()
调用也不会返回
label, name, help_text (-) – 与
input
输入函数的同名参数含义一致
- 返回
若用户点击当前按钮组中的某一按钮而触发表单提交,返回用户点击的按钮的值。 若用户点击
type=cancel
按钮或通过其它方式提交表单,则返回None
使用示例:
info = input_group('Add user', [ input('username', type=TEXT, name='username', required=True), input('password', type=PASSWORD, name='password', required=True), actions('actions', [ {'label': '提交', 'value': 'submit'}, {'label': '重置', 'type': 'reset'}, {'label': '取消', 'type': 'cancel'}, ], name='action', help_text='actions'), ]) if info is not None: save_user(info['username'], info['password'])
-
pywebio.input.
checkbox
(label='', options=None, *, inline=None, valid_func=None, name=None, value=None, help_text=None, **other_html_attrs)[源代码]¶ 勾选选项。可以多选,也可以不选。
-
pywebio.input.
file_upload
(label='', accept=None, name=None, placeholder='Choose file', required=None, help_text=None, **other_html_attrs)[源代码]¶ 文件上传。
- 参数
accept (str or list) –
单值或列表, 表示可接受的文件类型。单值或列表项支持的形式有:
以
.
字符开始的文件扩展名(例如:.jpg, .png, .doc
)。 注意:截止本文档编写之时,微信内置浏览器还不支持这种语法一个有效的 MIME 类型。 例如:
application/pdf
、audio/*
表示音频文件、video/*
表示视频文件、image/*
表示图片文件 参考 https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types
placeholder (str) – 未上传文件时,文件上传框内显示的文本
required (bool) – 是否必须要上传文件
label, name, help_text, other_html_attrs (-) – 与
input
输入函数的同名参数含义一致
- 返回
用户没有上传文件时,返回
None
;上传文件返回dict:{'filename': 文件名, 'content':文件二进制数据(bytes object)}
-
pywebio.input.
input
(label='', type='text', *, valid_func=None, name=None, value=None, placeholder=None, required=None, readonly=None, datalist=None, help_text=None, **other_html_attrs)[源代码]¶ 文本输入
- 参数
label (str) – 输入框标签
type (str) – 输入类型. 可使用的常量:
TEXT
,NUMBER
,FLOAT
,PASSWORD
valid_func (Callable) –
输入值校验函数. 如果提供,当用户输入完毕或提交表单后校验函数将被调用.
valid_func
接收输入值作为参数,当输入值有效时,返回None
,当输入值无效时,返回错误提示字符串. 比如:def check_age(age): if age>30: return 'Too old' elif age<10: return 'Too young' await input('Input your age', type=NUMBER, valid_func=check_age)
name – 输入框的名字. 与
input_group
配合使用,用于在输入组的结果中标识不同输入项. 在单个输入中,不可以设置该参数!value (str) – 输入框的初始值
placeholder (str) – 输入框的提示内容。提示内容会在输入框未输入值时以浅色字体显示在输入框中
required (bool) – 当前输入是否为必填项
readonly (bool) – 输入框是否为只读
datalist (list) – 输入建议内容列表,在页面上的显示效果为下拉候选列表,用户可以忽略建议内容列表而输入其他内容。仅当输入类型
type
为TEXT
时可用help_text (str) – 输入框的帮助文本。帮助文本会以小号字体显示在输入框下方
other_html_attrs – 在输入框上附加的额外html属性。参考: https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input#%E5%B1%9E%E6%80%A7
- 返回
用户输入的值
-
pywebio.input.
input_group
(label='', inputs=None, valid_func=None, cancelable=False)[源代码]¶ 输入组。向页面上展示一组输入
- 参数
label (str) – 输入组标签
inputs (list) – 输入项列表。列表的内容为对单项输入函数的调用,并在单项输入函数中传入
name
参数。valid_func (Callable) –
输入组校验函数。 函数签名:
callback(data) -> (name, error_msg)
valid_func
接收整个表单的值为参数,当校验表单值有效时,返回None
,当某项输入值无效时,返回出错输入项的name
值和错误提示. 比如:def check_form(data): if len(data['name']) > 6: return ('name', '名字太长!') if data['age'] <= 0: return ('age', '年龄不能为负数!') data = await input_group("Basic info",[ input('Input your name', name='name'), input('Repeat your age', name='age', type=NUMBER) ], valid_func=check_form) print(data['name'], data['age'])
cancelable (bool) – 表单是否可以取消。若
cancelable=True
则会在表单底部显示一个”取消”按钮。 注意:若inputs
中最后一项输入为actions()
,则忽略cancelable
- 返回
若用户取消表单,返回
None
,否则返回一个dict
, 其键为输入项的name
值,字典值为输入项的值
-
pywebio.input.
radio
(label='', options=None, *, inline=None, valid_func=None, name=None, value=None, required=None, help_text=None, **other_html_attrs)[源代码]¶ 单选选项
-
pywebio.input.
select
(label='', options=None, *, multiple=None, valid_func=None, name=None, value=None, required=None, help_text=None, **other_html_attrs)[源代码]¶ 下拉选择框。默认单选,设置 multiple 参数后,可以多选。但都至少要选择一个选项。
- 参数
options (list) –
可选项列表。列表项的可用形式有:
dict:
{label:选项标签, value: 选项值, [selected:是否默认选中,] [disabled:是否禁止选中]}
tuple or list:
(label, value, [selected,] [disabled])
单值: 此时label和value使用相同的值
注意:
options 中的 value 最终会转换成字符串。 select 返回值也是字符串(或字符串列表)
若
multiple
选项不为True
则可选项列表最多仅能有一项的selected
为True
。
multiple (bool) – 是否可以多选. 默认单选
value (list or str) – 下拉选择框初始选中项的值。当
multiple=True
时,value
需为list,否则为单个选项的值。 你也可以通过设置options
列表项中的selected
字段来设置默认选中选项。 最终选中项为value
参数和options
中设置的并集。required (bool) – 是否至少选择一项
label, valid_func, name, help_text, other_html_attrs (-) – 与
input
输入函数的同名参数含义一致
- 返回
字符串/字符串列表。如果
multiple=True
时,返回用户选中的 options 中的值的列表;不设置multiple
时,返回用户选中的 options 中的值
-
pywebio.input.
textarea
(label='', *, rows=6, code=None, maxlength=None, minlength=None, valid_func=None, name=None, value=None, placeholder=None, required=None, readonly=None, help_text=None, **other_html_attrs)[源代码]¶ 文本输入域
- 参数
rows (int) – 输入文本的行数(显示的高度)。输入的文本超出设定值时会显示滚动条
maxlength (int) – 允许用户输入的最大字符长度 (Unicode) 。未指定表示无限长度
minlength (int) – 允许用户输入的最小字符长度(Unicode)
code (dict) –
通过提供 Codemirror 参数让文本输入域具有代码编辑器样式:
res = await textarea('Text area', code={ 'mode': "python", 'theme': 'darcula' })
label, valid_func, name, value, placeholder, required, readonly, help_text, other_html_attrs (-) – 与
input
输入函数的同名参数含义一致
- 返回
用户输入的文本