set_env_demo.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. """
  2. `pywebio.session.set_env()` demo
  3. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  4. """
  5. from pywebio import start_server
  6. from pywebio.input import *
  7. from pywebio.output import *
  8. from pywebio.session import *
  9. import datetime
  10. import asyncio
  11. async def main():
  12. set_scope('time')
  13. put_markdown('> 可用于观察 `output_animation` 项的动画效果')
  14. put_markdown('---')
  15. async def bg_task():
  16. while 1:
  17. with use_scope('time', clear=True):
  18. put_text('当前时间:', datetime.datetime.now())
  19. await asyncio.sleep(1)
  20. run_async(bg_task())
  21. put_buttons(['输出文本'], [lambda: put_text(datetime.datetime.now())])
  22. put_markdown('> 可用于观察 `auto_scroll_bottom` 项的自动滚动效果')
  23. put_markdown('---')
  24. put_text('Some text.\n' * 10)
  25. state = {
  26. 'title': 'PyWebIO set_env() Demo',
  27. 'output_animation': True,
  28. 'auto_scroll_bottom': True,
  29. }
  30. set_env(**state)
  31. while 1:
  32. curr_state_info = ', '.join('%s=%r' % (k, v) for k, v in state.items())
  33. key = await actions('选择要更改的会话环境设置项', list(state.keys()), help_text='当前状态:' + curr_state_info)
  34. if key == 'title':
  35. state['title'] = await input('请输入标题', value=state['title'])
  36. set_env(title=state['title'])
  37. toast('已将标题设置为%r' % state['title'])
  38. elif key in state:
  39. state[key] = not (state[key])
  40. set_env(**{key: state[key]})
  41. toast('已将`%s`设置为%r' % (key, state[key]))
  42. if __name__ == '__main__':
  43. start_server(main, debug=True, port=8080)