Ползунки

vspomogatelnye klassy io stringio i io bytesio Экскурсия по tkinter, часть 1

Ползунки scales» или «sliders») используются для выбора значения из диапазона чисел. Перемещение ползунка с помощью перетаскивания или щелчка мышью изменяет значение виджета в диапазоне целых чисел и запускает обработчик, если он зарегистрирован.

Подобно флажкам и переключателям ползунки обладают параметром command для регистрации управляемого событиями обработчика, выполняемого немедленно при перемещении ползунка, а также параметром variable для связи с переменной tkinter, которая позволяет в любой момент времени получить или установить положение ползунка. Обрабатывать значение можно сразу же после его установки или позже.

Кроме того, у ползунков есть третий способ обработки — методы get и set, с помощью которых можно непосредственно обращаться к значению виджета, не связывая с ним переменную. Поскольку обработчики, регистрируемые с помощью параметра command, получают текущее значение ползунка в качестве аргумента, часто этого достаточно, чтобы не прибегать к связанным переменным или вызовам методов get/set.

Для иллюстрации основ применения этого элемента в примере 8.30 приводится сценарий, который создает два ползунка — горизонтальный и вертикальный, связанные между собой через ассоциированную переменную, что позволяет их синхронизировать.

Пример 8.30. PP4E\Gui\Tour\demoScale.py

“создает два связанных ползунка для запуска демонстрационных диалогов”

from tkinter import * # импортировать базовый набор виджетов

from dialogTable import demos # обработчики событий

from quitter import Quitter # прикрепить ксебеобъект Quitter

class Demo(Frame):

def __init__(self, parent=None, **options): Frame.__init__(self, parent, **options) self.pack()

Label(self, text=”Scale demos”).pack() self.var = IntVar()

Scale(self, label=’Pick demo number’,

command=self.onMove, # перехватывать перемещения

variable=self.var, # отражает положение

from_=0, to=len(demos)-1).pack()

Scale(self, label=’Pick demo number’, command=self.onMove, # перехватывать перемещения

variable=self.var, # отражает положение

from_=0, to=len(demos)-1, length=200, tickinterval=1, showvalue=YES, orient=’horizontal’).pack()

Quitter(self).pack(side=RIGHT)

Button(self, text=”Run demo”, command=self.onRun).pack(side=LEFT)

Button(self, text=”State”, command=self.report).pack(side=RIGHT)

def onMove(self, value): print(‘in onMove’, value)

def onRun(self):

pos = self.var.get() print(‘You picked’, pos) demo = list(demos.values())[pos] # отображение позиции на ключ

#  (представление в версии 3.X) print(demo()) # или

#  demos[ list(demos.keys())[pos] ]() def report(self):

print(self.var.get())

if __name__ == ‘__main__’: print(list(demos.keys())) Demo().mainloop()

Кроме доступа к значениям и регистрации обработчиков у ползунков имеются параметры, соответствующие понятию диапазона выбираемых значений, большинство из которых продемонстрировано в этом примере:

     Параметр label позволяет определить текст, появляющийся рядом со шкалой, параметр length позволяет определить начальный размер в пикселях, а параметр orient — направление.

     Параметры from_ и to позволяют определить минимальное и максимальное значения шкалы (обратите внимание, что from в языке Python является зарезервированным словом, а from_ — нет).

     Параметр tickinterval позволяет определить количество единиц измерения между отметками, наносимыми рядом со шкалой через равные интервалы (значение 0 по умолчанию означает, что отметки не выводятся).

     Параметр resolution позволяет определить количество единиц, на которое изменяется значение ползунка при каждом перетаскивании или щелчке левой кнопки мыши (по умолчанию 1).

     Параметр showvalue позволяет определить, должно ли отображаться текущее значение рядом с ползунком (по умолчанию showvalue=YES, то есть отображается).

Обратите внимание, что ползунки тоже прикрепляются к своим контейнерам, как и прочие виджеты tkinter. Посмотрим, как эти параметры используются на практике. На рис. 8.30 изображено окно, создаваемое этим сценарием в Windows 7 (в Unix и Mac получается аналогичная картина).

Рис. 8.30. Сценарий demoScale в действии

 

Для наглядности кнопка State выводит текущие значения ползунков, a Run demo запускает те же стандартные диалоги, используя целочисленные значения ползунков в качестве индекса таблицы demos. Сценарий также регистрирует обработчик command, который вызывается при каждом перемещении ползунка по любой из шкал и выводит новые значения ползунков. Ниже приводятся сообщения, отправленные в поток stdout после нескольких перемещений, с информацией о запускаемых демонстрационных диалогах (курсив) и о значениях ползунка (полужирный):

C:\\PP4E\Gui\Tour> python demoScale.py [‘Color’, ‘Query’, ‘Input’, ‘Open’, ‘Error’] in onMove 0 in onMove 0 in onMove 1 1 in onMove 2

You picked 2 123.0

in onMove 3

3

You picked 3

C:/Users/mark/Stuff/Books/4E/PP4E/dev/Examples/PP4E/Launcher.py

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Оцените статью
Секреты программирования
Добавить комментарий