PyWebIO output模块用法合集

官方函数清单

start_server

case1:启动单个应用

使用start_server()启动一个applications,示例如下。
后续例子只展示application,需要老铁们start_server时手动更换要启动的applications名字。

  • app:put_text_case()
  • port:19003(此端口需要没有被占用才行)。使用端口号start_server的好处是url固定,share给别人使用很方便。如果不指定port每次运行都会随机一个。
  • auto_open_webbrowser:为True时,执行代码后会自动帮你打开浏览器。
def put_text_case():
    put_text("Hello world!")
    
if __name__ == '__main__':
    start_server(applications=put_text_case, port=19003, auto_open_webbrowser=False)

case2:启动多个应用

from pywebio import start_server
from pywebio.output import put_text, put_buttons, put_link
from pywebio.session import go_app


def task_1():
    put_text('task_1')
    put_buttons(['Go task 2', 'Go index'], [lambda: go_app('task_2'), lambda: go_app('index')])


def task_2():
    put_text('task_2')
    put_buttons(['Go task 1'], [lambda: go_app('task_1')])


def index():
    put_link('Go task 1', app='task_1')  # Use `app` parameter to specify the task name
    put_link('Go task 2', app='task_2')


# equal to `start_server({'index': index, 'task_1': task_1, 'task_2': task_2})`
start_server([index, task_1, task_2], port=19004)

效果:
如录屏,注意看启动后的url。启动后进入的是list中的第一个应用。后续交互都可以进行app间跳转以及回到index页面。
在这里插入图片描述

put_text

def put_text_case():
    put_text("Hello world!")
    
if __name__ == '__main__':
    start_server(put_text_case, port=19003, auto_open_webbrowser=False)
   

效果:
在这里插入图片描述

put_markdown

case1:单行文本

def put_markdown_case1():
    put_markdown('~~Strikethrough~~')

效果:
在这里插入图片描述

case2:多行文本

def put_markdown_case2():
    put_markdown(r""" # H1
    This is content.
    """)

效果:
在这里插入图片描述

输出通知消息

def put_logger_case():
    put_info("这是一条info消息")
    put_success("这是一条success消息")
    put_warning("这是一条warning消息")
    put_error("这是一条error消息")

效果:
在这里插入图片描述

put_html

def put_html_case():
    put_html('X<sup>2</sup>')

效果:
在这里插入图片描述

put_link

# new_window=True将会打开新窗口。默认是False
def put_link_case():
    put_link("你再百度一下试试?", "https://www.baidu.com/", new_window=True)

put_processbar

case1:静态进度条

def put_processbar_case1():
    put_processbar(name="process", init=0.35, label="我就是个进度条:").show()

效果:
在这里插入图片描述

case2:动态进度条

import time

# 输出进度条name为bar,初始值为0, 进度条分为10份,每份为10%,每隔1s更新下进度条
def put_processbar_case2():
    put_processbar('bar')
    for i in range(1, 11):
        set_processbar('bar', i / 10)
        time.sleep(1)

效果:
在这里插入图片描述

put_loading

def put_loading_case():
    for shape in ('border', 'grow'):
        for color in ('primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark'):
            put_text(shape, color)
            put_loading(shape=shape, color=color)

    # The loading prompt and the output inside the context will disappear
    # automatically when the context block exits.
    with put_loading():
        put_text("Start waiting...")
        time.sleep(3)  # Some time-consuming operations
    put_text("The answer of the universe is 42")

    # using style() to set the size of the loading prompt
    # rem是CSS3新增的一个相对单位(root em,根em)
    put_loading().style('width:4rem; height:4rem')

效果:
在这里插入图片描述

put_code

case1:输入python代码

若要输入其他语言的代码,更改language参数即可

def put_code_case1():
    put_code(content='print("hello world")', language="python")

效果
在这里插入图片描述

case2:输出json

如果使用接口编写测试工具,可以直接将response打印出来方便查看。如果要输出为标准化的json格式,且中文能正常展示,就可以使用以下例子。

import json

def put_code_case2():
    info = {
   
   "code": 0, "message": "成功"}
    # 如果要输出为中文而不是ascii编码,应该设置ensure_ascii为False; 若想将info以格式化Json输出,使用indent=4
    info = json.dumps(info, indent=4, ensure_ascii=False)
    put_code(content=info, language="json")

效果:
在这里插入图片描述

put_datatable

import urllib.request

def put_datatable_case():
    with urllib.request.urlopen('https://fakerapi.it/api/v1/persons?_quantity=30') as f:
        data = json.load(f)['data']

    put_datatable(
        data,
        actions=[
            ("Edit Email", lambda row_id: datatable_update('user', input("Email"), row_id, "email")),
            ("Insert a Row", lambda row_id: datatable_insert('user', data[0], row_id)),
            None,  # separator
            ("Delete", lambda row_id: datatable_remove('user', row_id)),
        ],
        onselect=lambda row_id: toast(f'Selected row: {
     
     row_id}'),
        instance_id='user'
    )

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程程Summer@123

不积跬步无以至千里,感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值