Я пытаюсь привязать колесо мыши к холсту прокрутки в двух кадрах.Но я не могу понять это правильно!Только в одном кадре колесо мыши привязано правильно.
Где я допустил ошибку?Разве не принято давать каждому, позвольте мне назвать CustomWidget и собственную привязку к MouseWheel?
Должен ли я каким-либо образом отсоединять его?Если да, как я могу отменить привязку от моего класса "MyFirstGUI"?У меня есть некоторые проблемы, чтобы найти правильное «я».
В целом, переплет работает для одного класса.Если я прокручиваю колесо мыши, когда в моем окне отображается SystemsGUI, MainGUI прокручивается.
Вот извлечение моего кода:
from tkinter import *
import tkinter.ttk as ttk
class MyFirstGUI(object):
def __init__(self, master):
self.master = master
self.gui_control = ttk.Notebook(master)
self.main_gui = ttk.Frame(self.gui_control, borderwidth=0)
self.systems_gui = ttk.Frame(self.gui_control, borderwidth=0)
self.gui_control.add(self.main_gui, text='Main')
self.gui_control.add(self.systems_gui, text='Systems')
self.gui_control.grid(column=1,row=1, columnspan=9, rowspan=50,sticky=N+E+S+W)
self.test_1 = Main.MainFrame(self.main_gui)
self.test_1.grid(row=0, column=0, sticky="NESW")
self.test_2 = Systems.SystemFrame(self.systems_gui)
self.test_2.grid(row=0, column=0, sticky="NESW")
#[...]
master.mainloop()
MainGUI:
class MainFrame(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.rowconfigure(0, weight=1)
self.columnconfigure(0, weight=1)
self.main_canvas = tk.Canvas(self, borderwidth=0, highlightthickness=0)
self.main_canvas.grid(row=0,column=0, sticky="NESW")
self.vsb = tk.Scrollbar(self, orient="vertical", command=self.main_canvas.yview)
self.vsb.grid(row=0,column=1, sticky="NS")
self.main_canvas.bind_all("<MouseWheel>", self._on_mousewheel)
def _on_mousewheel(self, event):
self.main_canvas.yview_scroll(int(-1*(event.delta/120)), "units")
#[...]
Системный графический интерфейс (в основном одинаковый):
class SystemFrame(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.rowconfigure(0, weight=1)
self.columnconfigure(0, weight=1)
self.system_canvas = tk.Canvas(self, borderwidth=0, highlightthickness=0)
self.system_canvas.grid(row=0,column=0, sticky="NESW")
self.vsb = tk.Scrollbar(self, orient="vertical", command=self.system_canvas.yview)
self.vsb.grid(row=0,column=1, sticky="NS")
self.system_canvas.bind_all("<MouseWheel>", self._on_mousewheel)
def _on_mousewheel(self, event):
self.system_canvas.yview_scroll(int(-1*(event.delta/120)), "units")
#[...]