He agregado algunas funciones de barra de desplazamiento a mi GUI de Tkinter así
self.canvas = tk.Canvas(self.baseframe)
self.scrollbar = tk.Scrollbar(self.baseframe, orient="vertical", command=self.canvas.yview)
self.scrollable = tk.Frame(self.canvas)
self.scrollable.bind("<Configure>", lambda e: self.canvas.configure(scrollregion=self.canvas.bbox("all")))
self.canvas.create_window((0, 0), window=self.scrollable, anchor="n")
self.canvas.configure(yscrollcommand=self.scrollbar.set)
self.canvas.bind_all("<MouseWheel>", self._mousescroll)
He definido _mousecroll()
como
def _mousescroll(self, event):
"""mouse wheel scroll callback"""
# Divide the event.delta by some value to effect the scrolling speed
self.canvas.yview_scroll(int(-1*(event.delta/120)), "units")
que está funcionando muy bien.
Luego agrego algunos tkLabelFrame
widgets al área de desplazamiento (que a su vez contienen widgets que muestran cosas, no relevantes para esta pregunta). Toda la funcionalidad de desplazamiento funciona muy bien.
En otra parte de mi GUI, me gustaría que el usuario pudiera "saltar" a un punto específico en el área de desplazamiento, haciendo clic en un botón. En efecto, desplaza automáticamente el área de desplazamiento hasta este punto. es posible? Tengo control total sobre el código GUI, por lo que puedo agregar etiquetas a la lista de tkLabelFrames, almacenarlas en algún tipo de lista / diccionario para que se puedan buscar fácilmente ... ¿algo así?
Nota: El número de los tkLabelFrames
que se agregan al área de desplazamiento es dinámico, por lo que probablemente no funcionaría algún tipo de "salto absoluto a tantos píxeles". Esperaba que hubiera algún tipo de funcionalidad de "desplazamiento a un widget con esta etiqueta / atributo, etc." Cualquier ayuda apreciada. Gracias.