فهرست منبع

implement clear method for ui.scene

Falko Schindler 1 سال پیش
والد
کامیت
34b3328cbe
2فایلهای تغییر یافته به همراه20 افزوده شده و 0 حذف شده
  1. 6 0
      nicegui/elements/scene.py
  2. 14 0
      tests/test_scene.py

+ 6 - 0
nicegui/elements/scene.py

@@ -155,3 +155,9 @@ class Scene(Element,
     def delete(self) -> None:
         binding.remove(list(self.objects.values()), Object3D)
         super().delete()
+
+    def clear(self) -> None:
+        """Remove all objects from the scene."""
+        super().clear()
+        for object in list(self.objects.values()):
+            object.delete()

+ 14 - 0
tests/test_scene.py

@@ -130,3 +130,17 @@ def test_object_creation_via_attribute(screen: Screen):
     screen.open('/')
     screen.wait(0.5)
     assert screen.selenium.execute_script(f'return scene_c{scene.id}.children[4].name') == 'box'
+
+
+def test_clearing_scene(screen: Screen):
+    with ui.scene() as scene:
+        scene.box().with_name('box')
+        scene.box().with_name('box2')
+    ui.button('Clear', on_click=scene.clear)
+
+    screen.open('/')
+    screen.wait(0.5)
+    assert len(scene.objects) == 2
+    screen.click('Clear')
+    screen.wait(0.5)
+    assert len(scene.objects) == 0