PyWebIO input模块用法合集

代码如下

要查看不同的效果,请更改start_server方法中的applications参数

import time

import pywebio
from pywebio.input import *
from pywebio.output import put_text, put_markdown, put_buttons, popup
from datetime import date, timedelta


def check_age(age):
    if age >= 28:
        return '打工人'
    elif age <= 3:
        return '小宝宝'
    else:
        return '学生党'


def input_case1():
    # 点击提交后,直接在输入框下方展示校验结果
    input('输入你的年龄', type=NUMBER, validate=check_age)


def input_case2():
    # 点击提交后,直接在输入框下方展示校验结果
    name = input('输入你的姓名', placeholder="请输入")
    put_text(f"你叫{
      
      name}")


def textarea_case1():
    res = textarea('Text area', code={
    
    
        'mode': "python",
        'theme': 'darcula'
    })
    put_text(res)


def textarea_case2():
    res = textarea('Text area')
    put_text(res)


def input_slider():
    """
    value: 滑块的初始值
    min_value: 滑块允许的最小值
    max_value: 滑块允许的最大值
    step: 滑块的步长
    """
    value = slider(label="请选择数值:", value=5, min_value=1, max_value=100, step=1)
    put_text(value)


def checkbox_case1():
    check = checkbox("请选择:", ["A", "B", "C", "D"])
    put_text(f"你选择了{
      
      check}")


def checkbox_case2():
    check = checkbox("请选择:", ["A", "B", "C", "D"], inline=True)
    put_text(f"你选择了{
      
      check}")


def radio_case1():
    check = radio("请选择:", ["A", "B", "C", "D"], value="B")
    put_text(f"你选择了{
      
      check}")


def radio_case2():
    check = radio("请选择:", ["A", "B", "C", "D"], inline=True)
    put_text(f"你选择了{
      
      check}")


def actions_case1():
    confirm = actions('确定要提交信息吗?', ['确认', '取消'], help_text='删除后无法恢复')
    put_markdown(f'你点击的`{
      
      confirm}` 按钮').show()


def input_update_case1():
    country2city = {
    
    
        'China': ['Beijing', 'Shanghai', 'Hong Kong'],
        'USA': ['New York', 'Los Angeles', 'San Francisco'],
    }
    countries = list(country2city.keys())
    location = input_group("Select a location", [
        select('Country', options=countries, name='country',
               onchange=lambda c: input_update('city', options=country2city[c])),
        select('City', options=country2city[countries[0]], name='city'),
    ])
    put_text(location)


def set_now_ts(set_value):
    set_value(int(time.time()))
    # set_value(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))


def set_ts():
    # 当type=NUMBER时,只能显示时间戳,因此set_now_ts方法需要生成的是时间戳而不是字符串格式
    # 当type=TEXT,可以显示字符串格式的时间,
    ts = input('Timestamp', type=NUMBER, action=('Now', set_now_ts), placeholder="点击Now查看现在的时间",
               help_text="时间戳")
    put_text(ts)


def select_date(set_value):
    with popup('Select Date'):
        put_buttons(['Today'], onclick=[lambda: set_value(date.today(), 'Today')])
        put_buttons(['Yesterday'], onclick=[lambda: set_value(date.today() - timedelta(days=1), 'Yesterday')])


def set_date():
    d = input('Date', action=('Select', select_date), readonly=True)
    put_text(type(d), d)


def select1():
    sel = select("选择选项:", options=["A", "B"])
    put_text(f"你选择的是{
      
      sel}")


def select2():
    # options是列表
    # mutiple是false,所以即使有多个选项selected是true,也只有一个会被默认选中(会取最后一个selected是true的选项)
    sel = select("选择选项:", options=[["A", 0, False, True], ["B", 1, True, False], ["C", 2, False, False]])
    put_text(f"你选择的是{
      
      sel}")


def select3():
    # options是元组
    # mutiple是false,所以即使有多个选项selected是true,也只有一个会被默认选中(会取最后一个selected是true的选项)
    sel = select("选择选项:", options=[("A", 0, False, True), ("B", 1, True, False), ("C", 2, False, False)])
    put_text(f"你选择的是{
      
      sel}")


def select4():
    # options是字典
    # mutiple是false,所以即使有多个选项selected是true,也只有一个会被默认选中(会取最后一个selected是true的选项)
    sel = select("选择选项:", options=[{
    
    "label": "A", "value": 0, "selected": False, "disabled": True},
                                       {
    
    "label": "B", "value": 1, "selected": True, "disabled": False},
                                       {
    
    "label": "C", "value": 2, "selected": False, "disabled": False}])
    put_text(f"你选择的是{
      
      sel}")


def multiple_select_1():
    sel = select("支持多选:", ["A", "B", "C"], multiple=True, value=["A", "C"])
    put_text(f"你选择的是{
      
      sel}")


def multiple_select_2():
    sel = select("选择选项:", options=[("A", 0), ("B", 1), ("C", 2)], multiple=True)
    put_text(f"你选择的是{
      
      sel}")


if __name__ == '__main__':
    pywebio.start_server(input_update_case1, port=19001, debug=True, cdn=False, auto_open_webbrowser=False)

猜你喜欢

转载自blog.csdn.net/weixin_44691253/article/details/130869486