На этом шаге мы рассмотрим назначение, свойства и пример использования этого виджета.
Компонент регулятора представляет собой указатель, движущийся по шкале. С его помощью можно задавать какие-либо величины, выраженные вещественными числами. Этот компонент представляется классом Scale.
Компонент Scale поддерживает такой набор опций:
Для указания значения регулятора можно использовать либо опцию value, либо опцию variable;
Опции, задаваемые только посредством стилей:
Также нам могут пригодиться два метода, поддерживаемые компонентом 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.