Tutorial de Tkinter - Barra de desplazamiento

  1. Barra de desplazamiento de Tkinter
  2. Barra de desplazamiento horizontal de Tkinter

El widget Scrollbar de Tkinter se usa normalmente para desplazar widgets como ListBox, Text o Canvas verticalmente, o Entry horizontalmente. Muestra un deslizador en la posición correcta.

Barra de desplazamiento de Tkinter

import tkinter as tk

class Scrollbar_Example:
    def __init__(self):
        self.window = tk.Tk()

        self.scrollbar = tk.Scrollbar(self.window)
        self.scrollbar.pack(side="right", fill="y")

        self.listbox = tk.Listbox(self.window, yscrollcommand=self.scrollbar.set)
        for i in range(100):
            self.listbox.insert("end", str(i))
        self.listbox.pack(side="left", fill="both")

        self.scrollbar.config(command=self.listbox.yview)

        self.window.mainloop()


if __name__ == '__main__':
    app = Scrollbar_Example()  

Tkinter Scrollbar Basic

self.scrollbar = tk.Scrollbar(self.window)

Inicia la instancia Scrollbar.

self.listbox = tk.Listbox(self.window, yscrollcommand=self.scrollbar.set)
.
.
self.scrollbar.config(command=self.listbox.yview)

Necesitamos configurar tanto el Listbox como la Scrollbar para conectarlos correctamente.

  1. Configura la devolución de llamada de yscrollcommand a set de Scrollbar. La opción yscrollcommand](https://docs.python.org/3.9/library/tkinter.ttk.html#scrollable-widget-options) es un widget desplazable que se controla con una barra de desplazamiento, y se usa para comunicarse con barras de desplazamiento verticales.
  2. Ponga el command de la Scrollbar en la yview del Listbox. Cuando el usuario mueve el deslizador de la Scrollbar, llama al método de la yview con el argumento adecuado.

Barra de desplazamiento horizontal de Tkinter

La barra de desplazamiento horizontal se usa para desplazar los widgets como Text y Entry en la orientación horizontal.

import tkinter as tk

class Scrollbar_Example:
    def __init__(self):
        self.window = tk.Tk()

        self.scrollbar = tk.Scrollbar(self.window, orient=tk.HORIZONTAL)
        self.scrollbar.pack(side="bottom", fill="x")

        self.text = tk.Text(self.window,
                            wrap = "none",
                            xscrollcommand=self.scrollbar.set)
        
        self.text.insert("end", str(dir(tk.Scrollbar)))
        self.text.pack(side="top", fill="x")

        self.scrollbar.config(command=self.text.xview)

        self.window.mainloop()


if __name__ == '__main__':
    app = Scrollbar_Example()  

Barra de desplazamiento horizontal de Tkinter

self.scrollbar = tk.Scrollbar(self.window, orient=tk.HORIZONTAL)

Inicia una barra de desplazamiento horizontal especificando que la orient es HORIZONTAL.

self.text = tk.Text(self.window,
                            wrap = "none",
                            xscrollcommand=self.scrollbar.set)

Para desplazar el texto horizontalmente, necesitamos poner xscrollcommand en el método set de la Scrollbar, pero no yscrollcommand como en el ejemplo anterior.

self.scrollbar.config(command=self.text.xview)

En consecuencia, la llamada de la barra de desplazamiento horizontal debe estar conectada con el método xview pero no con yview.

comments powered by Disqus