pywebio.output
— Make output to web browser¶
输出内容到用户浏览器
本模块提供了一系列函数来输出不同形式的内容到用户浏览器,并支持灵活的输出控制。
输出控制¶
内容输出¶
-
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) – 在给定的锚点之后输出内容。若给定的锚点不存在,则不输出任何内容。
注意:
before
和after
参数不可以同时使用。 当anchor
指定的锚点已经在页面上存在时,before
和after
参数将被忽略。
-
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_indent
或lstrip
来防止Markdown错误解析(但不要同时使用strip_indent
和lstrip
):# 不使用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
类型的输出函数
在表格中显示一组按钮
- 参数
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
输出一组按钮
- 参数
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
函数的同名参数含义一致