Browse Source

* file_selector examples (#2195)

* make State inherit from SimpleNamespace so that the linters don't mark state.var as an error

Co-authored-by: Fred Lefévère-Laoide <Fred.Lefevere-Laoide@Taipy.io>
Fred Lefévère-Laoide 6 months ago
parent
commit
1f334d262d

+ 37 - 0
doc/gui/examples/controls/file_selector_image.py

@@ -0,0 +1,37 @@
+# Copyright 2021-2024 Avaiga Private Limited
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+#        http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+# -----------------------------------------------------------------------------------------
+# To execute this script, make sure that the taipy-gui package is installed in your
+# Python environment and run:
+#     python <script>
+# -----------------------------------------------------------------------------------------
+import io
+
+from PIL import Image
+
+from taipy.gui import Gui, State
+
+path = ""
+image = None
+
+def upload(state: State):
+    img = Image.open(state.path)
+    img_byte_arr = io.BytesIO()
+    img.save(img_byte_arr, format="PNG")
+    state.image = img_byte_arr.getvalue()
+
+page = """
+<|{path}|file_selector|on_action=upload|extensions=png,jpg|>
+<|{image}|image|>
+"""
+
+if __name__ == "__main__":
+    Gui(page).run(title="File Selector - With image")

+ 25 - 0
doc/gui/examples/controls/file_selector_simple.py

@@ -0,0 +1,25 @@
+# Copyright 2021-2024 Avaiga Private Limited
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+#        http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+# -----------------------------------------------------------------------------------------
+# To execute this script, make sure that the taipy-gui package is installed in your
+# Python environment and run:
+#     python <script>
+# -----------------------------------------------------------------------------------------
+from taipy.gui import Gui
+
+filename = "<unknown>"
+
+page = """<|{filename}|file_selector|>
+<|selected File: {filename}|>
+"""
+
+if __name__ == "__main__":
+    Gui(page).run(title="File Selector - Simple")

+ 2 - 2
taipy/gui/state.py

@@ -14,7 +14,7 @@ import typing as t
 from contextlib import nullcontext
 from operator import attrgetter
 from pathlib import Path
-from types import FrameType
+from types import FrameType, SimpleNamespace
 
 from flask import has_app_context
 
@@ -25,7 +25,7 @@ if t.TYPE_CHECKING:
     from .gui import Gui
 
 
-class State:
+class State(SimpleNamespace):
     """Accessor to the bound variables from callbacks.
 
     `State` is used when you need to access the value of variables