From 7833d8c5f4081c660a616fdc49ae0d1d0b99b1ff Mon Sep 17 00:00:00 2001 From: ninerforce Date: Tue, 19 Nov 2024 11:55:00 +1100 Subject: [PATCH] [FEATURE] Add set_visibility and show_zoom_buttons feat: Add functionality to toggle visibility of zoom buttons - Introduced `set_visibility` method in `CanvasButton` to dynamically show or hide buttons by controlling their canvas item states. - Added `toggle_zoom_buttons` method in `TkinterMapView` to manage the visibility of zoom buttons (`+` and `-`) using the new `set_visibility` feature. - Ensures clean UI manipulation by hiding buttons when not needed, while preserving functionality for future re-enabling. This update enhances the flexibility of the map widget interface. --- tkintermapview/canvas_button.py | 8 ++++++++ tkintermapview/map_widget.py | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/tkintermapview/canvas_button.py b/tkintermapview/canvas_button.py index 4212d30..2c5c103 100644 --- a/tkintermapview/canvas_button.py +++ b/tkintermapview/canvas_button.py @@ -74,3 +74,11 @@ def draw(self): self.map_widget.canvas.tag_bind(self.canvas_text, "", self.hover_on) self.map_widget.canvas.tag_bind(self.canvas_rect, "", self.hover_off) self.map_widget.canvas.tag_bind(self.canvas_text, "", self.hover_off) + + def set_visibility(self, visible: bool): + if visible: + self.map_widget.canvas.itemconfigure(self.canvas_rect, state="normal") + self.map_widget.canvas.itemconfigure(self.canvas_text, state="normal") + else: + self.map_widget.canvas.itemconfigure(self.canvas_rect, state="hidden") + self.map_widget.canvas.itemconfigure(self.canvas_text, state="hidden") diff --git a/tkintermapview/map_widget.py b/tkintermapview/map_widget.py index e98616f..201c3cd 100644 --- a/tkintermapview/map_widget.py +++ b/tkintermapview/map_widget.py @@ -927,3 +927,7 @@ def button_zoom_in(self): def button_zoom_out(self): # zoom out of middle of map self.set_zoom(self.zoom - 1, relative_pointer_x=0.5, relative_pointer_y=0.5) + + def show_zoom_buttons(self, show: bool = True): + self.button_zoom_in.set_visibility(show) + self.button_zoom_out.set_visibility(show) \ No newline at end of file