从上面可以看出,PyWebIO把交互分成了输入和输出两部分:输入函数为阻塞式调用,会在用户浏览器上显示一个表单,在用户提交表单之前输入函数将不会返回;输出函数将内容实时输出至浏览器。这种交互方式和控制台程序是一致的,因此PyWebIO应用非常适合使用控制台程序的编写逻辑来进行开发。
此外,PyWebIO还支持事件回调:PyWebIO允许你输出一些控件并绑定回调函数,当控件被点击时相应的回调函数便会被执行。
下面是一个例子:
from functools import partial
def edit_row(choice, row):
put_text("You click %s button ar row %s" % (choice, row))
put_table([
['Idx', 'Actions'],
[1, put_buttons(['edit', 'delete'], onclick=partial(edit_row, row=1))],
[2, put_buttons(['edit', 'delete'], onclick=partial(edit_row, row=2))],
[3, put_buttons(['edit', 'delete'], onclick=partial(edit_row, row=3))],
])
完整代码:
from functools import partial
from pywebio.output import put_table, put_buttons, put_text
def edit_row(choice, row, id):
put_text(f"You click {choice} button are row {row}. id={id}")
data = [
["ID", "Actions"],
[1, put_buttons(["Edit", "Delete"], onclick=partial(edit_row, row=1, id=1))],
[2, put_buttons(["Edit", "Delete"], onclick=partial(edit_row, row=2, id=2))],
[3, put_buttons(["Edit", "Delete"], onclick=partial(edit_row, row=3, id=3))],
]
put_table(data)