nice_gui.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #!/usr/bin/env python3
  2. import justpy as jp
  3. import uvicorn
  4. import sys
  5. import inspect
  6. from .ui import Ui
  7. from .timer import Timer
  8. from .elements.element import Element
  9. # start uvicorn with auto-reload; afterwards the auto-reloaded process should not start uvicorn again
  10. if not inspect.stack()[-2].filename.endswith('spawn.py'):
  11. uvicorn.run('nice_gui:app', host='0.0.0.0', port=80, lifespan='on', reload=True)
  12. sys.exit()
  13. wp = jp.QuasarPage(delete_flag=False, title='Nice GUI', favicon='favicon.png')
  14. wp.head_html = '<script>confirm = () => true;</script>' # avoid confirmation dialog for reload
  15. main = jp.Div(a=wp, classes='q-ma-md column items-start', style='row-gap: 1em')
  16. main.add_page(wp)
  17. jp.justpy(lambda: wp, start_server=False)
  18. @jp.app.on_event('startup')
  19. def startup():
  20. [jp.run_task(t) for t in Timer.tasks]
  21. Element.wp = wp
  22. Element.view_stack = [main]
  23. app = jp.app
  24. ui = Ui()
  25. # def line_plot(self, n=1, limit=20):
  26. # fig = plt.figure()
  27. # view = jp.Matplotlib(fig=fig)
  28. # return LinePlot(view, fig, n=n, limit=limit)