Tkinter Tutorial - Barra de rolagem

Jinku Hu 25 junho 2020
  1. Barra de rolagem do Tkinter
  2. Tkinter Barra de rolagem horizontal
Tkinter Tutorial - Barra de rolagem

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.

Autor: 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 Facebook