Учебник Tkinter - Панель прокрутки

  1. Tkinter ScrollBar
  2. Горизонтальная панель прокрутки

Виджет Tkinter Scrollbar обычно используется для прокрутки виджетов типа ListBox, Text или Canvas по вертикали или Entry по горизонтали. Он показывает ползунок в правильном положении.

Tkinter ScrollBar

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 Основная

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

Он инициирует экземпляр Scrollbar.

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

Нам нужно настроить как Listbox, так и Scrollbar, чтобы правильно их соединить.

  1. Установите команду yscrollcommand обратного вызова на scrollbar. yscrollcommand - это опция прокручиваемых виджетов, которая управляется полосой прокрутки и используется для связи с вертикальными полосами прокрутки.
  2. Установите command из Scrollbar в yview из Listbox. Когда пользователь перемещает ползунок Панели прокрутки, он вызывает метод yview с соответствующим аргументом.

Горизонтальная панель прокрутки

Полоса горизонтальной прокрутки используется для прокрутки виджетов типа Text и Entry в горизонтальной ориентации.

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()  

Панель прокрутки Tkinter Горизонтальная

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

Она инициирует горизонтальную полосу прокрутки, указывая orient на HORIZONTAL.

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

Чтобы прокрутить текст по горизонтали, нам нужно установить xscrollcommand в set метод Scrollbar, но не yscrollcommand, как в вышеприведенном примере.

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

Соответственно, обратный вызов горизонтальной полосы прокрутки должен быть связан с методом xview, а не yview.

comments powered by Disqus