Шаг 42.
Библиотека Tkinter. Компоненты и вспомогательные классы. Стилизуемые компоненты. Компонент Scale: регулятор

    На этом шаге мы рассмотрим назначение, свойства и пример использования этого виджета.

    Компонент регулятора представляет собой указатель, движущийся по шкале. С его помощью можно задавать какие-либо величины, выраженные вещественными числами. Этот компонент представляется классом Scale.

    Компонент Scale поддерживает такой набор опций:

    Опции, задаваемые только посредством стилей:

    Также нам могут пригодиться два метода, поддерживаемые компонентом Scale:

    В завершение приведем пример использования этого виджета. Обратите внимание, что в нем создан свой стиль для регулятора, посредством которого изменено значение опции background. Пример достаточно прокомментирован и, по нашему мнению, дополнительных пояснений не требуется.

import tkinter
import tkinter.ttk


class Application(tkinter.ttk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        # Обязательно указываем ширину и высоту контейнера посредством
        # опций width и height соответственно
        self.configure(width=250, height=150)
        self.pack(padx=4, pady=4)
        self.create_widgets()
        self.master.title("Пример использования Scale")
        # Запрещаем изменять размеры окна
        self.master.resizable(False, False)

    def create_widgets(self):
        # Создаем объект стиля
        styleScale = tkinter.ttk.Style()
        # Задаем значения опций посредством стилей
        # TScale - имя стиля (для виджета Scale
        # должно быть TScale)
        styleScale.configure('TScale', background='green')
        # Определяем переменную, которую свяжем с регулятором
        self.varT = tkinter.DoubleVar()
        # Придадим ей начальное значение
        self.varT.set(0.0)
        # Создание регулятора, в том числе с
        # использованием заданного стиля
        # Связываем функцию onScale() как ответ на
        # изменение регулятора
        sclT = tkinter.ttk.Scale(self, style='TScale', orient=tkinter.HORIZONTAL, 
               variable=self.varT, from_=-100.0, to=100.0, command=self.onScale)
        sclT.pack(side=tkinter.LEFT, padx=15)
        # Создаем виджет Label для отображения
        # значения регулятора
        # С виджетом связываем переменную self.varT,
        # поэтому ее значение стразу же отобразится в метке
        self.lblVersion = tkinter.ttk.Label(self, text="0.00", textvariable=self.varT)
        self.lblVersion.pack(side=tkinter.LEFT)

    def onScale(self, val):
        # Получение нового значения
        # Округляем значение до двух цифр после запятой
        v = round(float(val), 2)
        # Помещаем новое значение в переменную self.varT
        self.varT.set(v)
          

root = tkinter.Tk()
app = Application(master=root)
root.mainloop()
Архив с файлом можно взять здесь.

    Результат работы приложения приведен на рисунке 1.


Рис.1. Результат работы приложения

    На следующем шаге мы рассмотрим виджет LabelFrame.




Предыдущий шаг Содержание Следующий шаг