bindings_documentation.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from nicegui import ui
  2. from ..documentation_tools import text_demo
  3. def main_demo() -> None:
  4. class Demo:
  5. def __init__(self):
  6. self.number = 1
  7. demo = Demo()
  8. v = ui.checkbox('visible', value=True)
  9. with ui.column().bind_visibility_from(v, 'value'):
  10. ui.slider(min=1, max=3).bind_value(demo, 'number')
  11. ui.toggle({1: 'A', 2: 'B', 3: 'C'}).bind_value(demo, 'number')
  12. ui.number().bind_value(demo, 'number')
  13. def more() -> None:
  14. @text_demo('Bind to dictionary')
  15. def bind_dictionary():
  16. dictionary = {'name': 'NiceGUI', 'age': 2}
  17. with ui.grid(columns=2):
  18. ui.label('Name:')
  19. ui.label().bind_text_from(dictionary, 'name')
  20. ui.label('Age:')
  21. ui.label().bind_text_from(dictionary, 'age')
  22. def nicegui_older():
  23. dictionary['age'] += 1
  24. ui.button('Make NiceGUI older!', on_click=nicegui_older)
  25. @text_demo('Bind to variable', '''Here we are binding the value from the datepicker to a bare variable. [Using official datepicker example](https://nicegui.io/documentation/date#input_element_with_date_picker)''')
  26. def bind_variable():
  27. today_date = '1970-01-01'
  28. def notify_date():
  29. global today_date
  30. ui.notify(f'Today is: {today_date}')
  31. with ui.input('Date') as date:
  32. with date.add_slot('append'):
  33. ui.icon('edit_calendar').on('click', lambda: menu.open()).classes('cursor-pointer')
  34. with ui.menu() as menu:
  35. ui.date(on_change=notify_date).bind_value(date).bind_value(globals(), 'today_date')