Tutorial de Tkinter - Barra de desplazamiento

Jinku Hu 25 junio 2020 18 enero 2020 Tkinter Tkinter Scrollbar
  1. Barra de desplazamiento de Tkinter
  2. Barra de desplazamiento horizontal de Tkinter
Tutorial de Tkinter - Barra de desplazamiento

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 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.

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn