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)[源代码]

勾选选项。可以多选,也可以不选。

参数
  • options (list) – 可选项列表。格式与 select 函数的 options 参数含义一致

  • inline (bool) – 是否将选项显示在一行上。默认每个选项单独占一行

  • value (list) – 勾选选项初始选中项。为选项值的列表。 你也可以通过设置 options 列表项中的 selected 字段来设置默认选中选项。

  • label, valid_func, name, help_text, other_html_attrs (-) – 与 input 输入函数的同名参数含义一致

返回

用户选中的 options 中的值的列表。当用户没有勾选任何选项时,返回空列表

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/pdfaudio/* 表示音频文件、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) – 输入建议内容列表,在页面上的显示效果为下拉候选列表,用户可以忽略建议内容列表而输入其他内容。仅当输入类型 typeTEXT 时可用

  • 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)[源代码]

单选选项

参数
  • options (list) – 可选项列表。格式与 select 函数的 options 参数含义一致

  • inline (bool) – 是否将选项显示在一行上。默认每个选项单独占一行

  • value (str) – 单选选项初始选中项的值。 你也可以通过设置 options 列表项中的 selected 字段来设置默认选中选项。

  • required (bool) – 是否至少选择一项

  • label, valid_func, name, help_text, other_html_attrs (-) – 与 input 输入函数的同名参数含义一致

返回

用户选中的选项的值(字符串)

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使用相同的值

    注意:

    1. options 中的 value 最终会转换成字符串。 select 返回值也是字符串(或字符串列表)

    2. multiple 选项不为 True 则可选项列表最多仅能有一项的 selectedTrue

  • 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'
    })
    

    更多配置可以参考 https://codemirror.net/doc/manual.html#config

  • label, valid_func, name, value, placeholder, required, readonly, help_text, other_html_attrs (-) – 与 input 输入函数的同名参数含义一致

返回

用户输入的文本