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:
parent
6e9258a444
commit
344b30e684
@ -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.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._parent_canvas.bind("<Configure>", self._fit_frame_dimensions_to_canvas)
|
||||||
|
|
||||||
|
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("<MouseWheel>", self._mouse_wheel_all, add="+")
|
||||||
|
|
||||||
self.bind_all("<KeyPress-Shift_L>", self._keyboard_shift_press_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("<KeyPress-Shift_R>", self._keyboard_shift_press_all, add="+")
|
||||||
self.bind_all("<KeyRelease-Shift_L>", self._keyboard_shift_release_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)
|
self._parent_canvas.configure(xscrollincrement=1, yscrollincrement=1)
|
||||||
elif sys.platform == "darwin":
|
elif sys.platform == "darwin":
|
||||||
self._parent_canvas.configure(xscrollincrement=4, yscrollincrement=8)
|
self._parent_canvas.configure(xscrollincrement=4, yscrollincrement=8)
|
||||||
|
else:
|
||||||
|
self._parent_canvas.configure(xscrollincrement=30, yscrollincrement=30)
|
||||||
|
|
||||||
def _mouse_wheel_all(self, event):
|
def _mouse_wheel_all(self, event):
|
||||||
if self.check_if_master_is_canvas(event.widget):
|
if self.check_if_master_is_canvas(event.widget):
|
||||||
@ -263,10 +271,11 @@ class CTkScrollableFrame(tkinter.Frame, CTkAppearanceModeBaseClass, CTkScalingBa
|
|||||||
else:
|
else:
|
||||||
if self._shift_pressed:
|
if self._shift_pressed:
|
||||||
if self._parent_canvas.xview() != (0.0, 1.0):
|
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:
|
else:
|
||||||
if self._parent_canvas.yview() != (0.0, 1.0):
|
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):
|
def _keyboard_shift_press_all(self, event):
|
||||||
self._shift_pressed = True
|
self._shift_pressed = True
|
||||||
|
@ -26,7 +26,7 @@ frame_4.configure(label_text="CTkScrollableFrame")
|
|||||||
frame_5 = customtkinter.CTkScrollableFrame(app, orientation="vertical", label_text="CTkScrollableFrame", corner_radius=0)
|
frame_5 = customtkinter.CTkScrollableFrame(app, orientation="vertical", label_text="CTkScrollableFrame", corner_radius=0)
|
||||||
frame_5.grid(row=0, column=2, rowspan=2, sticky="nsew")
|
frame_5.grid(row=0, column=2, rowspan=2, sticky="nsew")
|
||||||
|
|
||||||
for i in range(100):
|
for i in range(20):
|
||||||
customtkinter.CTkCheckBox(frame_1).grid(row=i, padx=10, pady=10)
|
customtkinter.CTkCheckBox(frame_1).grid(row=i, padx=10, pady=10)
|
||||||
customtkinter.CTkCheckBox(frame_2).grid(row=i, padx=10, pady=10)
|
customtkinter.CTkCheckBox(frame_2).grid(row=i, padx=10, pady=10)
|
||||||
customtkinter.CTkCheckBox(frame_3).grid(row=0, column=i, padx=10, pady=10)
|
customtkinter.CTkCheckBox(frame_3).grid(row=0, column=i, padx=10, pady=10)
|
||||||
|
Loading…
Reference in New Issue
Block a user