# scale

Создание примитива линейной шкалы и управление им.

## СИНТАКСИС

          scale имяПути ?параметры?

## СТАНДАРТНЫЕ ПАРАМЕТРЫ

- -activebackground
- -background
- -borderwidth
- -cursor
- -font
- -foreground
- -highlightbackground
- -highlightcolor
- -highlightthickness
- -orient
- -relief
- -repeatdelay
- -repeatinterval
- -takefocus
- -troughcolor

Подробное описание этих параметров приведено в разделе options.

## ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ ПРИМИТИВА

Имя параметра: | -bigincrement
Имя в Базе: | bigIncrement
Класс в Базе: | BigIncrement

Некоторые способы обращения со шкалой требуют использования "больших" шагов. Этот параметр задает величину большого шага. Если его значение равно 0 (как, например, по умолчанию), то большой шаг считается равным 1/10 интервала шкалы.

Имя параметра: | -command
Имя в Базе: | command
Класс в Базе: | Command

Задает префикс команды Tcl, исполняемой при всяком изменении показателя шкалы какой-либо командой примитива. Сама команда Tcl состоит из этого префикса, за которым следует пробел и вещественное число, равное новому значению показателя шкалы.

Имя параметра: | -digits
Имя в Базе: | digits
Класс в Базе: | Digits

Целое число, указывающее, сколько значащих цифр следует сохранить при преобразовании показателя шкалы в строку текста. Если это число неположительно, то выбирается наименьшее число, обеспечивающее различное представление всех возможных положений движка шкалы.

Имя параметра: | -from
Имя в Базе: | from
Класс в Базе: | From

Вещественное число левая или верхняя граница шкалы.

Имя параметра: | -label
Имя в Базе: | label
Класс в Базе: | Label

Строка текста, выводимая в качестве названия шкалы. Для вертикальной шкалы выводится непосредственно справа от верхнего конца шкалы. Для горизонтальной шкалы название выводится непосредственно выше левого конца шкалы. Если значением параметра служит пустая строка, то никакого названия не выводится.

Имя параметра: | -length
Имя в Базе: | length
Класс в Базе: | Length

Задает желаемую длину шкалы на экране в пикселах (т.е. в любой форме, приемлемой для Tk_GetPixels). Это высота вертикальной шкалы или ширина горизонтальной.

Имя параметра: | -resolution
Имя в Базе: | resolution
Класс в Базе: | Resolution

Вещественное число, задающее цену деления шкалы. Если это значение положительно, то показатель шкалы будет всегда округляться к целому кратному этой величины (такими будут, в частности, метки шкалы и границы ее интервала). Если это значение неположительно, то округления не происходит. Значение параметра по умолчанию равно "1" (т.е. показатели должны быть целыми).

Имя параметра: | -showvalue
Имя в Базе: | showValue
Класс в Базе: | ShowValue

Булевское значение, указывающее, следует или нет выводить текущий показатель шкалы.

Имя параметра: | -sliderlength
Имя в Базе: | sliderLength
Класс в Базе: | SliderLength

Задает размер движка шкалы (вдоль его длинной стороны) в пикселах (т.е. в любой форме, приемлемой для Tk_GetPixels).

Имя параметра: | -sliderrelief
Имя в Базе: | sliderRelief
Класс в Базе: | SliderRelief

Задает вид движка шкалы, например, raised или sunken.

Имя параметра: | -state
Имя в Базе: | state
Класс в Базе: | State

Задает одно из трех состояний шкалы: normal,active или disabled. Если шкала недоступна, то значение ее показателя нельзя изменить и шкалу нельзя активизировать. Движок на активной шкале изображается цветом, заданным параметром activeBackground.

Имя параметра: | -tickinterval
Имя в Базе: | tickInterval
Класс в Базе: | TickInterval

Вещественное число, определяющее величину промежутка между числовыми метками снизу или слева от движка. Если значение параметра равно "0", то метки не выводятся.

Имя параметра: | -to
Имя в Базе: | to
Класс в Базе: | To

Вещественное число правая или нижняя граница шкалы. Может быть как меньше, так и больше значения, задаваемого параметром from.

Имя параметра: | -variable
Имя в Базе: | variable
Класс в Базе: | Variable

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

Имя параметра: | -width
Имя в Базе: | width
Класс в Базе: | Width

Задает желаемую толщину полосы шкалы (в любой форме, приемлемой для Tk_GetPixels). Для вертикальной шкалы это ее ширина, для горизонтальной высота.

## ОПИСАНИЕ

Команда scale создает новое окно (задаваемое аргументом имяПути) и превращает его в примитив линейной шкалы. Детали изображения шкалы, такие как ее цвета, ориентация и объемный вид задаются с помощью описанных выше дополнительных параметров. Команда scale возвращает аргумент имяПути. В момент выполнения этой команды не должно существовать окна с именем имяПути, но должен существовать его предок.

Шкала представляет собой примитив, который выводит на экран прямоугольную полоску шкалы и маленький движок. Полоска отображает интервал вещественных чисел (определенный параметрами from, to и resolution), а положение движка задает некоторое конкретное число на этом интервале. Положение движка (а значит, и показатель шкалы) можно менять с помощью "Мыши" или клавиатуры, как описано ниже (см. "ПРИВЯЗКИ"). При каждом изменении показателя шкалы исполняется команда Tcl (заданная параметром command), и другие примитивы получают доступ к результатам выполненного изменения. Кроме того показатель шкалы можно (с помощью параметра variable) связать с некоторой переменной, так что изменения значений показателя или переменной немедленно отзываются друг на друге.

В примитиве шкалы можно вывести также три внешних атрибута: имя шкалы справа сверху (или слева сверху, если шкала горизонтальна), число непосредственно слева от движка (непосредственно сверху, если шкала горизонтальна) и набор числовых меток непосредственно слева от текущего значения (непосредственно снизу, если шкала горизонтальна). Вывод любого из этих атрибутов можно отменить с помощью параметров конфигурации.

## КОМАНДА ПРИМИТИВА

Команда scale создает новую команду Tcl с именем имяПути. С помощью этой команды можно выполнять различные операции над примитивом. Ее общий вид.

          имяПути параметр ?арг арг ...?

Параметр и аргументы уточняют поведение команды. Примитивы линейной шкалы допускают следующие формы команды:

имяПути cget параметр
  Возвращает текущее значение параметра конфигурации с именемпараметр. Параметрможет быть любым из параметров команды scale.
имяПути configure ?параметр? ?значение параметр значение ...?
  Запрашивает значения параметров конфигурации примитива или изменяет их. Если параметр не указан, то возвращает список, содержащий значения всех допустимых в имениПути параметров (формат списка описан в Tk_ConfigureInfo). Если параметр задан, а его новое значение нет, то команда возвращает часть полного списка, относящуюся к указанному параметру. Если заданы одна или несколько пар параметр-значение, то указанным параметрам примитива присваиваются новые значения, а команда возвращает пустую строку. Параметр может быть любым из параметров командыscale.
имяПути coords ?значение?
  Возвращает список, элементами которого являются x и y координаты точки посередине полосы шкалы, отвечающей указанному значению. Если аргумент значение опущен, то возвращаются координаты точки, отвечающей текущему показателю шкалы.
имяПути get ?x y?
  Если аргументы x и y опущены, то возвращает текущий показатель шкалы. Если они заданы, то они определяют координаты точки в примитиве; в этом случае команда возвращает значение показателя шкалы, соответствующего указанной точке. При этом используется только одна из координат: x для горизонтальной шкалы и y для вертикальной.
имяПути identify x y
  Возвращает текстовую строку, указывающую, какая часть шкалы расположена в точке с координатами x и y. Возвращаемое значение slider означает, что это точка на движке; trough1 означает, что точка находится выше или левее движка; trough2означает, что точка находится ниже или правее движка. Если точка расположена вне шкалы, то команда возвращает пустую строку.
имяПути set значение
  Эта команда предназначена для изменения текущего показателя шкалы, а значит, и положения движка. Аргумент значениезадает новое значение показателя. Если шкала недоступна, то команда не приводит ни к каким результатам.

## ПРИВЯЗКИ

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

При нажатии клавиши 1 "Мыши" на полосе шкалы движок сдвигается в направлении курсора на величину, заданную параметром resolution. Если клавишу не отпускать, то сдвиг автоматически повторяется.

Если нажать клавишу 1 на движке, то движок можно тащить.

Если нажать клавишу 1 на полосе шкалы при нажатой клавише Control. то движок пробежит до конца полосы в направлении курсора "Мыши".

Если нажать клавишу 2, то показатель шкалы будет установлен в положение курсора "Мыши". Если тащить "Мышь" с нажатой клавишей 2, то показатель шкалы будет соответственно меняться.

Нажатие на клавиши Up и Left приводит к перемещению движка вверх (влево) на величину, указанную параметромresolution.

Нажатие на клавиши Down и Right приводит к перемещению движка вниз (вправо) на величину, указанную параметром resolution.

Нажатие на клавиши Control-Up и Control-Left приводит к перемещению движка вверх (влево) на величину, указанную параметром bigIncrement.

Нажатие на клавиши Control-Down и Control-Right приводит к перемещению движка вниз (вправо) на величину, указанную параметром bigIncrement.

Нажатие на клавишу Home приводит к перемещению движка вверх (влево) до конца полосы.

Нажатие на клавишу End приводит к перемещению движка вниз (вправо) до конца полосы.

Если шкала сделана недоступной с помощью параметра state, то ни одна из описанных выше привязок не оказывает какого-либо действия.

Определяя новые привязки к отдельным примитивам или переопределяя привязки класса, поведение линейной шкалы можно изменить.