mirror of
https://github.com/TomSchimansky/CustomTkinter.git
synced 2023-08-10 21:13:13 +03:00
fixed scrollable frame mouse wheel on linux #1356
This commit is contained in:
@ -74,7 +74,13 @@ class CTkScrollableFrame(tkinter.Frame, CTkAppearanceModeBaseClass, CTkScalingBa
|
||||
|
||||
self.bind("<Configure>", lambda e: self._parent_canvas.configure(scrollregion=self._parent_canvas.bbox("all")))
|
||||
self._parent_canvas.bind("<Configure>", self._fit_frame_dimensions_to_canvas)
|
||||
self.bind_all("<MouseWheel>", self._mouse_wheel_all, add="+")
|
||||
|
||||
if "linux" in sys.platform:
|
||||
self.bind_all("<Button-4>", self._mouse_wheel_all, add="+")
|
||||
self.bind_all("<Button-5>", self._mouse_wheel_all, add="+")
|
||||
else:
|
||||
self.bind_all("<MouseWheel>", self._mouse_wheel_all, add="+")
|
||||
|
||||
self.bind_all("<KeyPress-Shift_L>", self._keyboard_shift_press_all, add="+")
|
||||
self.bind_all("<KeyPress-Shift_R>", self._keyboard_shift_press_all, add="+")
|
||||
self.bind_all("<KeyRelease-Shift_L>", self._keyboard_shift_release_all, add="+")
|
||||
@ -243,6 +249,8 @@ class CTkScrollableFrame(tkinter.Frame, CTkAppearanceModeBaseClass, CTkScalingBa
|
||||
self._parent_canvas.configure(xscrollincrement=1, yscrollincrement=1)
|
||||
elif sys.platform == "darwin":
|
||||
self._parent_canvas.configure(xscrollincrement=4, yscrollincrement=8)
|
||||
else:
|
||||
self._parent_canvas.configure(xscrollincrement=30, yscrollincrement=30)
|
||||
|
||||
def _mouse_wheel_all(self, event):
|
||||
if self.check_if_master_is_canvas(event.widget):
|
||||
@ -263,10 +271,11 @@ class CTkScrollableFrame(tkinter.Frame, CTkAppearanceModeBaseClass, CTkScalingBa
|
||||
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(-1 if event.num == 4 else 1, "units")
|
||||
else:
|
||||
if self._parent_canvas.yview() != (0.0, 1.0):
|
||||
self._parent_canvas.yview("scroll", -event.delta, "units")
|
||||
self._parent_canvas.yview_scroll(-1 if event.num == 4 else 1, "units")
|
||||
|
||||
|
||||
def _keyboard_shift_press_all(self, event):
|
||||
self._shift_pressed = True
|
||||
|
Reference in New Issue
Block a user