pywebio.output — Make output to web browser

输出内容到用户浏览器

本模块提供了一系列函数来输出不同形式的内容到用户浏览器,并支持灵活的输出控制。

输出控制

锚点

pywebio.output.set_anchor(name)[源代码]

在当前输出处标记锚点。 若已经存在 name 锚点,则先将旧锚点删除

pywebio.output.clear_before(anchor)[源代码]

清除 anchor 锚点之前输出的内容。 ⚠️注意: 位于 anchor 锚点之前设置的锚点也会被清除

pywebio.output.clear_after(anchor)[源代码]

清除 anchor 锚点之后输出的内容。 ⚠️注意: 位于 anchor 锚点之后设置的锚点也会被清除

pywebio.output.clear_range(start_anchor, end_anchor)[源代码]

清除 start_anchor - end_ancher 锚点之间输出的内容. 若 start_anchorend_ancher 不存在,则不进行任何操作。

⚠️注意: 在 start_anchor - end_ancher 之间设置的锚点也会被清除

pywebio.output.remove(anchor)[源代码]

anchor 锚点连同锚点处的内容移除

pywebio.output.scroll_to(anchor, position='top')[源代码]

将页面滚动到 anchor 锚点处

参数
  • anchor (str) – 锚点名

  • position (str) –

    将锚点置于屏幕可视区域的位置。可用值:

    • TOP : 滚动页面,让锚点位于屏幕可视区域顶部

    • MIDDLE : 滚动页面,让锚点位于屏幕可视区域中间

    • BOTTOM : 滚动页面,让锚点位于屏幕可视区域底部

环境设置

pywebio.output.set_title(title)[源代码]

设置页面标题

pywebio.output.set_output_fixed_height(enabled=True)[源代码]

开启/关闭页面固高度模式

pywebio.output.set_auto_scroll_bottom(enabled=True)[源代码]

开启/关闭页面自动滚动到底部

内容输出

pywebio.output.put_text(text, inline=False, anchor=None, before=None, after=None)pywebio.io_ctrl.OutputReturn[源代码]

输出文本内容

参数
  • text (str) – 文本内容

  • inline (bool) – 文本行末不换行。默认换行

  • anchor (str) – 为当前的输出内容标记锚点,若锚点已经存在,则将锚点处的内容替换为当前内容。

  • before (str) – 在给定的锚点之前输出内容。若给定的锚点不存在,则不输出任何内容

  • after (str) – 在给定的锚点之后输出内容。若给定的锚点不存在,则不输出任何内容。

注意: beforeafter 参数不可以同时使用。 当 anchor 指定的锚点已经在页面上存在时,beforeafter 参数将被忽略。

pywebio.output.put_markdown(mdcontent, strip_indent=0, lstrip=False, anchor=None, before=None, after=None)pywebio.io_ctrl.OutputReturn[源代码]

输出Markdown内容。

参数
  • mdcontent (str) – Markdown文本

  • strip_indent (int) – 对于每一行,若前 strip_indent 个字符都为空格,则将其去除

  • lstrip (bool) – 是否去除每一行开始的空白符

  • anchor, before, after (str) – 与 put_text 函数的同名参数含义一致

当在函数中使用Python的三引号语法输出多行内容时,为了排版美观可能会对Markdown文本进行缩进, 这时候,可以设置 strip_indentlstrip 来防止Markdown错误解析(但不要同时使用 strip_indentlstrip ):

# 不使用strip_indent或lstrip
def hello():
    put_markdown(r""" # H1
This is content.
""")

# 使用lstrip
def hello():
    put_markdown(r""" # H1
    This is content.
    """, lstrip=True)

# 使用strip_indent
def hello():
    put_markdown(r""" # H1
    This is content.
    """, strip_indent=4)
pywebio.output.put_html(html, anchor=None, before=None, after=None)pywebio.io_ctrl.OutputReturn[源代码]

输出Html内容。

与支持通过Html输出内容到 Jupyter Notebook 的库兼容。

参数
  • html – html字符串或 实现了 IPython.display.HTML 接口的类的实例

  • anchor, before, after (str) – 与 put_text 函数的同名参数含义一致

pywebio.output.put_code(content, langage='', anchor=None, before=None, after=None)pywebio.io_ctrl.OutputReturn[源代码]

输出代码块

参数
  • content (str) – 代码内容

  • langage (str) – 代码语言

  • anchor, before, after (str) – 与 put_text 函数的同名参数含义一致

pywebio.output.put_table(tdata, header=None, span=None, anchor=None, before=None, after=None)pywebio.io_ctrl.OutputReturn[源代码]

输出表格

参数
  • tdata (list) – 表格数据。列表项可以为 list 或者 dict , 单元格的内容可以为字符串或 put_xxx 类型的输出函数,字符串内容的单元格显示时会被当作html。

  • header (list) –

    设定表头。 当 tdata 的列表项为 list 类型时,若省略 header 参数,则使用 tdata 的第一项作为表头。

    tdata 为字典列表时,使用 header 指定表头顺序,不可省略。 此时, header 格式可以为 <字典键>列表 或者 (<显示文本>, <字典键>) 列表。

  • span (dict) – 表格的跨行/跨列信息,格式为 { (行id,列id):{"col": 跨列数, "row": 跨行数} } 其中 行id列id 为将表格转为二维数组后的需要跨行/列的单元格,二维数据包含表头,id 从 0 开始记数。

  • anchor, before, after (str) – 与 put_text 函数的同名参数含义一致

使用示例:

# 'Name'单元格跨2行、'Address'单元格跨2列
put_table([
    ['Name', 'Address'],
    ['City', 'Country'],
    ['Wang', 'Beijing', 'China'],
    ['Liu', 'New York', 'America'],
], span={(0,0):{"row":2}, (0,1):{"col":2}})

# 单元格为 ``put_xxx`` 类型的输出函数
put_table([
    ['Type', 'Content'],
    ['html', 'X<sup>2</sup>'],
    ['text', put_text('<hr/>')],
    ['buttons', put_buttons(['A', 'B'], onclick=...)],
    ['markdown', put_markdown('`Awesome PyWebIO!`')],
    ['file', put_file('hello.text', b'')],
    ['table', put_table([['A', 'B'], ['C', 'D']])]
])

# 设置表头
put_table([
    ['Wang', 'M', 'China'],
    ['Liu', 'W', 'America'],
], header=['Name', 'Gender', 'Address'])

# dict类型的表格行
put_table([
    {"Course":"OS", "Score": "80"},
    {"Course":"DB", "Score": "93"},
], header=["Course", "Score"])  # or header=[("课程", "Course"), ("得分" ,"Score")]

0.3 新版功能: 单元格的内容支持 put_xxx 类型的输出函数

pywebio.output.table_cell_buttons(buttons, onclick, **callback_options)str[源代码]

在表格中显示一组按钮

参数

buttons, onclick, save (str) – 与 put_buttons 函数的同名参数含义一致

使用示例:

from functools import partial

def edit_row(choice, row):
    put_text("You click %s button at row %s" % (choice, row))

put_table([
    ['Idx', 'Actions'],
    ['1', table_cell_buttons(['edit', 'delete'], onclick=partial(edit_row, row=1))],
    ['2', table_cell_buttons(['edit', 'delete'], onclick=partial(edit_row, row=2))],
    ['3', table_cell_buttons(['edit', 'delete'], onclick=partial(edit_row, row=3))],
])

0.3 版后已移除: Use put_buttons() instead

pywebio.output.put_buttons(buttons, onclick, small=None, anchor=None, before=None, after=None, **callback_options)pywebio.io_ctrl.OutputReturn[源代码]

输出一组按钮

参数
  • buttons (list) –

    按钮列表。列表项的可用形式有:

    • dict: {label:选项标签, value:选项值}

    • tuple or list: (label, value)

    • 单值: 此时label和value使用相同的值

  • onclick (Callable or Coroutine) – 按钮点击回调函数. onclick 可以是普通函数或者协程函数. 函数签名为 onclick(btn_value). 当按钮组中的按钮被点击时,onclick 被调用,并传入被点击的按钮的 value 值。 可以使用 functools.partial 来在 onclick 中保存更多上下文信息 。

  • small (bool) – 是否显示小号按钮,默认为False

  • anchor, before, after (str) – 与 put_text 函数的同名参数含义一致

  • callback_options

    回调函数的其他参数。根据选用的 session 实现有不同参数

    CoroutineBasedSession 实现
    • mutex_mode: 互斥模式。默认为 False 。若为 True ,则在运行回调函数过程中,无法响应当前按钮组的新点击事件,仅当 onclick 为协程函数时有效

    ThreadBasedSession 实现
    • serial_mode: 串行模式模式。默认为 False 。若为 True ,则运行当前点击事件时,其他所有新的点击事件都将被排队等待当前点击事件时运行完成。 不开启 serial_mode 时,ThreadBasedSession 在新线程中执行回调函数。所以如果回调函数运行时间很短, 可以关闭 serial_mode 来提高性能。

使用示例:

from functools import partial

def edit_row(choice, id):
    put_text("You click %s button with id: %s" % (choice, id))

put_buttons(['edit', 'delete'], onclick=partial(edit_row, id=1))
pywebio.output.put_image(content, format=None, title='', width=None, height=None, anchor=None, before=None, after=None)pywebio.io_ctrl.OutputReturn[源代码]

输出图片。

参数
  • content – 文件内容. 类型为 bytes-like object 或者为 PIL.Image.Image 实例

  • title (str) – 图片描述

  • width (str) – 图像的宽度,单位是CSS像素(数字px)或者百分比(数字%)。

  • height (str) – 图像的高度,单位是CSS像素(数字px)或者百分比(数字%)。可以只指定 width 和 height 中的一个值,浏览器会根据原始图像进行缩放。

  • format (str) – 图片格式。如 png , jpeg , gif

  • anchor, before, after (str) – 与 put_text 函数的同名参数含义一致

pywebio.output.put_file(name, content, anchor=None, before=None, after=None)pywebio.io_ctrl.OutputReturn[源代码]

输出文件。 在浏览器上的显示为一个以文件名为名的链接,点击链接后浏览器自动下载文件。

参数
  • name (str) – 文件名

  • content – 文件内容. 类型为 bytes-like object

  • anchor, before, after (str) – 与 put_text 函数的同名参数含义一致