從上面可以看出,PyWebIO把交互分成了輸入和輸出兩部分:輸入函數為阻塞式調用,會在用戶瀏覽器上顯示一個表單,在用戶提交表單之前輸入函數將不會返回;輸出函數將內容實時輸出至瀏覽器。這種交互方式和控制臺程序是一致的,因此PyWebIO應用非常適合使用控制臺程序的編寫邏輯來進行開發。
此外,PyWebIO還支持事件回調:PyWebIO允許你輸出一些控件并綁定回調函數,當控件被點擊時相應的回調函數便會被執行。
下面是一個例子:
from functools import partialdef 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_textdef 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)