interactive_image_documentation.py 1.2 KB

12345678910111213141516171819202122232425262728
  1. from nicegui import ui
  2. from ..documentation_tools import text_demo
  3. def main_demo() -> None:
  4. from nicegui.events import MouseEventArguments
  5. def mouse_handler(e: MouseEventArguments):
  6. color = 'SkyBlue' if e.type == 'mousedown' else 'SteelBlue'
  7. ii.content += f'<circle cx="{e.image_x}" cy="{e.image_y}" r="15" fill="none" stroke="{color}" stroke-width="4" />'
  8. ui.notify(f'{e.type} at ({e.image_x:.1f}, {e.image_y:.1f})')
  9. src = 'https://picsum.photos/id/565/640/360'
  10. ii = ui.interactive_image(src, on_mouse=mouse_handler, events=['mousedown', 'mouseup'], cross=True)
  11. def more() -> None:
  12. @text_demo('Nesting elements', '''
  13. You can nest elements inside an interactive image.
  14. Use Tailwind classes like "absolute top-0 left-0" to position the label absolutely with respect to the image.
  15. Of course this can be done with plain CSS as well.
  16. ''')
  17. def nesting_elements():
  18. with ui.interactive_image('https://picsum.photos/id/147/640/360'):
  19. ui.button(on_click=lambda: ui.notify('thumbs up'), icon='thumb_up') \
  20. .props('flat fab color=white') \
  21. .classes('absolute bottom-0 left-0 m-2')