FAQ.rst 2.0 KB

12345678910111213141516171819202122232425
  1. 常见问题
  2. ==========================
  3. .. contents::
  4. :local:
  5. 如何让输入框在提交后不消失,并可以持续性地输入
  6. ----------------------------------------------------------
  7. PyWebIO 的设计就是输入表单在成功提交后就销毁,因为 PyWebIO 的输入是阻塞式的,一旦提交表单,输入函数就返回了,此时表单还留在界面上是没有意义的。如果想实现持续性的输入,可以将接收输入以及后续操作放到一个 ``while`` 循环中。
  8. 如何输出一个诸如搜索栏的输入框
  9. ----------------------------------------------------------
  10. 很遗憾,PyWebIO并不支持将输入框作为一般性的内容输出到页面。因为这样就相当于又回到了基于回调获取输入的方式了,会导致应用开发的复杂性提高,PyWebIO不太推荐过多依赖回调机制,所以对此仅提供了非常少的支持。
  11. 不过也可以使用另一种方式实现近似的效果:只需要在需要显示输入框的地方放置一个button( `put_buttons() <pywebio.output.put_buttons>` ),然后在button的回调函数中调用输入函数来获取输入并进行后续操作。
  12. 为什么 ``put_buttons()`` 的回调不起作用
  13. ----------------------------------------------------------
  14. 一般情况下,在Server模式下,任务函数一旦返回(或在Script模式下,脚本运行结束),会话就结束了,此时事件回调也将不起作用,可以在任务函数(或脚本)末尾处使用 `pywebio.session.hold()` 函数来将会话保持,这样在用户关闭浏览器页面前,事件回调将一直可用。 参见 :ref:`Server模式与Script模式 <server_and_script_mode>`
  15. 为什么 ``put_file()`` 无法下载文件
  16. ----------------------------------------------------------
  17. 原因同上。 ``put_file()`` 的文件链接被点击后,也是需要和服务端通信获取文件数据的,所以会话关闭后下载链接会不可用。可以在任务函数末尾处使用 `pywebio.session.hold()` 函数来将会话保持。