# checkbutton

Создание примитива защелкивающейся кнопки и управление им.

## СИНТАКСИС

          checkbutton имяПути параметры

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

- -activebackground
- -activeforeground
- -anchor
- -background
- -bitmap
- -borderwidth
- -cursor
- -disabledforeground
- -font
- -foreground
- -highlightbackground
- -highlightcolor
- -highlightthickness
- -image
- -justify
- -padx
- -pady
- -relief
- -takefocus
- -text
- -textvariable
- -underline
- -wraplength

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

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

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

Ассоциирует с кнопкой команду Tk. Обычно команда выполняется при отпускании клавиши 1 "Мыши" на кнопке. Перед выполнением этой команды обновляется значение глобальной переменной (параметр -variable).

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

Задает желаемую высоту кнопки. Если в кнопке выводится изображение или двуцветное изображение, то значение параметра задается в пикселях (т.е., в любом виде, приемлемом для Tk_GetPixels); высота текстовой кнопки задается числом строчек текста. Если параметр не задан, то высота кнопки вычисляется по ее содержимому.

Имя параметра: | -indicatoron
Имя в Базе: | indicatorOn
Класс в Базе: | IndicatorOn

Указывает, следует ли выводить индикатор. Значение параметра должно быть булевским. Если значением является "ложь", то параметр relief игнорируется и примитив всегда изображается вдавленным, если он выделен, и выпуклым в противном случае.

Имя параметра: | -offvalue
Имя в Базе: | offValue
Класс в Базе: | OffValue

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

Имя параметра: | -onvalue
Имя в Базе: | onValue
Класс в Базе: | OnValue

Задает значение, которое нужно сохранять в переменной кнопки всякий раз при выделении кнопки. По умолчанию сохраняемое значение равно 1.

Имя параметра: | -selectcolor
Имя в Базе: | selectColor
Класс в Базе: | SelectColor

Задает цвет фона для изображения выделенной кнопки. Если параметр IndicatorOn имеет значение истина, то указанный цвет применяется для изображения индикатора. В системе Windows тот же цвет используется в качестве фона изображения индикатора вне зависимости от состояния выделения. Если значением параметра IndicatorOn является ложь, то указанный цвет используется в качестве фона для всего примитива, когда он выделен, вместо значений параметров background и activeBackground.

Имя параметра: | -selectimage
Имя в Базе: | selectImage
Класс в Базе: | SelectImage

Задает изображение, выводимое в кнопке при выделении кнопки проверки (вместо изображения, заданного параметром -image). Если параметр -image отсутствует, то значение параметра -selectimage игнорируется.

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

Задает одно из трех состояний защелкивающейся кнопки: normal, active или disabled. В нормальном состоянии защелкивающаяся кнопка изображается с использованием значений параметров foreground и background. В активном состоянии защелкивающаяся кнопка обычно находится, если на ней расположен курсор. Защелкивающаяся кнопка в активном состоянии изображается с использованием значений параметров activeForeground и activeBackground. Отключенное состояние указывает на то, что кнопка должна быть нечувствительной: привязки по умолчанию не приводят к запуску примитива и нажатия на кнопку "Мыши" игнорируются. В этом состоянии изображение кнопки определяется значениями параметров disabledForeground и background.

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

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

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

Задает желаемую ширину кнопки. Если в кнопке выводится изображение или двуцветное изображение, то значение параметра задается в пикселях (т.е., в любом виде, приемлемом для Tk_GetPixels); ширина текстовой кнопки задается числом символов. Если параметр не задан, то ширина кнопки вычисляется по ее содержимому.

## ОПИСАНИЕ

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

Защелкивающаяся кнопка представляет собой примитив, в котором выводится текстовая строка, изображение или двуцветное изображение, а также квадратик, называемый индикатором. Весь выводимый текст должен быть записан одним шрифтом, однако он может занимать несколько строчек на экране (если в нем есть символы перевода строки или задан параметр wrapLength). Один из символов текста может быть подчеркнут (в соответствии со значением параметра underline). Защелкивающаяся кнопка обладает всеми характеристиками обычной кнопки, включая следующие: в зависимости от значения параметра button кнопка имеет три разных вида; кнопка может выглядеть выпуклой, вдавленной или плоской, кроме того, она может мигать. При инициации защелкивающейся кнопки (нажатием на клавишу 1 "Мыши", когда курсор "Мыши" находится на кнопке) выполняется команда Tcl, указанная в параметре -command.

Кроме того, защелкивающиеся кнопки можно выделять. Если защелкивающаяся кнопка выделена, то индикатор обычно изображается как выделенный, а переменная Tcl, ассоциированная с данной кнопкой, имеет предписанное значение (обычно 1). В ОС Unix индикатор изображается вдавленным и имеет специальный цвет. В системе Windows вместо этого в индикаторе стоит галочка. Если защелкивающаяся кнопка не выделена, то индикатор имеет невыделенный вид, а ассоциированная переменная имеет другое значение (обычно 0). В ОС Unix такой индикатор изображается выпуклым и не имеет специального цвета. В системе Windows в невыделенном индикаторе отсутствует галочка. По умолчанию имя переменной, ассоциированной с защелкивающейся кнопкой, совпадает с именем, использующимся при создании самой кнопки. Имя переменной и записываемые в ней значения выделенная/невыделенная можно поменять с помощью параметров командной строки или в базе данных параметров. С помощью параметров конфигурации можно также поменять вид индикатора (или даже отменить саму необходимость его вывода). По умолчанию выделение защелкивающейся кнопки меняется при последовательных щелчках кнопки. Кроме того, каждая защелкивающаяся кнопка отслеживает значение своей глобальной переменной и изменяет свое состояние всякий раз при перемене этого значения с .выделенная. на невыделенная и обратно.

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

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

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

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

  имяПути cget параметр
    Возвращает текущее значение параметра конфигурации с именем параметр. Параметр может быть любым из параметров команды checkbutton.
  имяПути configure параметр значение параметр значение ...
    Запрашивает значения параметров конфигурации примитива или изменяет их. Если параметр не указан, то возвращает список, содержащий значения всех допустимых в имениПути параметров (формат списка описан в Tk_ConfigureInfo). Если параметр задан, а его новое значение нет, то команда возвращает часть полного списка, относящуюся к указанному параметру. Если заданы одна или несколько пар параметр-значение, то указанным параметрам примитива присваиваются новые значения, а команда возвращает пустую строку. Параметр может быть любым из параметров команды checkbutton.
  имяПути deselect
    Отменяет выделение защелкивающейся кнопки и устанавливает значение "не выделена" ассоциированной переменной.
  имяПути flash
    Заставляет защелкивающуюся кнопку мигать. Этот эффект достигается путем многократного вывода изображения кнопки поочередно в активном и нормальном состоянии. По окончании работы команды защелкивающаяся кнопка остается в том же состоянии (активном или нормальном), что и перед началом ее выполнения. Если перед началом выполнения команды защелкивающаяся кнопка находится в состоянии disabled, то команда игнорируется.
  имяПути invoke
    Приводит в точности к тому же результату, что и нажатие клавиши "Мыши" на защелкивающейся кнопке: кнопка становится выделенной и выполняется команда Tcl, ассоциированная с кнопкой (при наличии такой команды). Возвращаемое значение совпадает с возвращаемым значением команды Tcl (или является пустой строкой, если с защелкивающейся кнопкой никакой команды не ассоциировано). Если перед началом выполнения команды защелкивающаяся кнопка находится в состоянии disabled, то команда игнорируется.
  имяПути toggle
    Выделяет кнопку, перерисовывая ее в новом состоянии и изменяя значение ассоциированной переменной.

## ПРЕДПОЧТЕНИЯ

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

- В ОС Unix кнопка становится активной при появлении над ней курсора "Мыши" и дезактивируется, когда курсор ее покидает. В системах Mac и Windows при нажатии клавиши 1 "Мыши" на защелкивающейся кнопке кнопка активизируется, когда курсор "Мыши" находится на кнопке и становится неактивной, когда курсор ее покидает.
- При нажатии клавиши 1 "Мыши" на защелкивающейся кнопке кнопка становится выделенной и выполняется команда, привязанная к ней.
- Если защелкивающаяся кнопка находится в фокусе ввода, то нажатие на клавишу пробела приводит к выполнению команды, привязанной к этой кнопке.
- В системе Windows имеются дополнительные привязки клавиш: плюс (+) и знак равенства (=) выделяют кнопку, а минус (-) отменяет выделение.
- Если защелкивающаяся кнопка находится в состоянии disabled, то все описанные выше действия не приводят ни к какому результату: кнопка остается неактивной.
- Поведение защелкивающейся кнопки можно изменить с помощью новых связей для конкретных примитивов или путем переопределения связей данного класса.