Tkinter Tutorial - Barra de rolagem

  1. Barra de rolagem do Tkinter
  2. Tkinter Barra de rolagem horizontal

O Tkinter Scrollbar widget é normalmente utilizado para rolar widgets como ListBox, Text ou Canvas verticalmente, ou Entry horizontalmente. Ele mostra um deslizador na posição correta.

Barra de rolagem do 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 Básico

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

Ele inicia a instância Scrollbar.

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

Precisamos configurar ambas Listbox e Scrollbar para conectá-las corretamente.

  1. Defina yscrollcommand callback para set de Scrollbar. yscrollcommand é a opção “scrollable widgets” que é controlada por uma barra de rolagem, e é utilizada para se comunicar com barras de rolagem verticais.
  2. Defina command da Scrollbar para a yview da Listbox. Quando o usuário move o deslizador da Scrollbar, ele chama o método yview com o argumento apropriado.

Tkinter Barra de rolagem horizontal

A barra de rolagem horizontal é utilizada para rolar os widgets como Texto e Entry na orientação 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 rolagem horizontal

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

Ele inicia uma barra de rolagem horizontal especificando o orient a ser HORIZONTAL.

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

Para rolar o texto horizontalmente, precisamos definir xscrollcommand para o método set da Scrollbar, mas não yscrollcommand como no exemplo acima.

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

Correspondentemente, o retorno da barra de rolagem horizontal deve ser conectado com o método xview mas não com o yview.