From 544b10ee2d2a5eb0b4f94a038d323cfc1a1170df Mon Sep 17 00:00:00 2001 From: Saul Ricardo Date: Tue, 9 Apr 2024 00:47:05 -0600 Subject: [PATCH] Add events for scroll in linux. --- customtkinter/windows/widgets/ctk_scrollable_frame.py | 6 ++++-- customtkinter/windows/widgets/ctk_scrollbar.py | 7 ++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/customtkinter/windows/widgets/ctk_scrollable_frame.py b/customtkinter/windows/widgets/ctk_scrollable_frame.py index eede0911..f256e9b7 100644 --- a/customtkinter/windows/widgets/ctk_scrollable_frame.py +++ b/customtkinter/windows/widgets/ctk_scrollable_frame.py @@ -75,6 +75,8 @@ def __init__(self, self.bind("", lambda e: self._parent_canvas.configure(scrollregion=self._parent_canvas.bbox("all"))) self._parent_canvas.bind("", self._fit_frame_dimensions_to_canvas) self.bind_all("", self._mouse_wheel_all, add="+") + self.bind_all("", self._mouse_wheel_all, add="+") + self.bind_all("", self._mouse_wheel_all, add="+") self.bind_all("", self._keyboard_shift_press_all, add="+") self.bind_all("", self._keyboard_shift_press_all, add="+") self.bind_all("", self._keyboard_shift_release_all, add="+") @@ -263,10 +265,10 @@ def _mouse_wheel_all(self, event): else: if self._shift_pressed: if self._parent_canvas.xview() != (0.0, 1.0): - self._parent_canvas.xview("scroll", -event.delta, "units") + self._parent_canvas.xview("scroll", -10 if event.num == 4 else 10, "units") else: if self._parent_canvas.yview() != (0.0, 1.0): - self._parent_canvas.yview("scroll", -event.delta, "units") + self._parent_canvas.yview("scroll", -10 if event.num == 4 else 10, "units") def _keyboard_shift_press_all(self, event): self._shift_pressed = True diff --git a/customtkinter/windows/widgets/ctk_scrollbar.py b/customtkinter/windows/widgets/ctk_scrollbar.py index 8e962215..815effdb 100644 --- a/customtkinter/windows/widgets/ctk_scrollbar.py +++ b/customtkinter/windows/widgets/ctk_scrollbar.py @@ -86,6 +86,9 @@ def _create_bindings(self, sequence: Optional[str] = None): self._canvas.bind("", self._clicked) if sequence is None or sequence == "": self._canvas.bind("", self._mouse_scroll_event) + if sequence is None or sequence == "" or sequence == "": + self._canvas.bind("", self._mouse_scroll_event) + self._canvas.bind("", self._mouse_scroll_event) def _set_scaling(self, *args, **kwargs): super()._set_scaling(*args, **kwargs) @@ -246,8 +249,10 @@ def _mouse_scroll_event(self, event=None): if self._command is not None: if sys.platform.startswith("win"): self._command('scroll', -int(event.delta/40), 'units') - else: + elif sys.platform == "darwin": self._command('scroll', -event.delta, 'units') + else: + self._command('scroll', -10 if event.num == 4 else 10, 'units') def set(self, start_value: float, end_value: float): self._start_value = float(start_value)