Уроки Tk
#04: Кнопка - button |
В этом уроке будет рассмотрена кнопка, по-английски - button, тоже один из самых часто встречающихся виджетов. Кнопки как правило используются для запуска какого-нибудь кода. Хорошим стилем является привязка к каждой кнопке какого-нибудь сочетания клавиш, чтобы опытные пользователи могли работать с клавиатуры. В одном окне рекомендуется размещать не более пяти кнопок. Кнопка по умолчанию (та, которая будет нажата при нажатии пользователем клавиши Enter) выделяется рамкой. Будьте внимательны при выборе кнопки по умолчанию. Для кнопок выполняющих необратимые действия (например, удаление) при нажатии рекомендуется выводит диалог для подтверждения. Важные кнопки можно выделять цветом или размещать на них изображения.
В Tk цвет задаётся словом. Есть определенное количество стандартных цветов, начиная с black (черный), white(белый), и так далее, в включая оттенки, примерно 750 английских названий цветов (!). Полный список можно увидеть на странице colors справки по Tk или часть в программе Color Demo, которую можно скачать в разделе Файлы. Но, есть и другой путь задания цвета - как в Web-дизайне (точнее, в HTML), сочитанием трех цифр в формате RGB (Red-красный Green-зеленый Blue-синий). Сначала ставится символ #, а потом три двузначных шестнадцатеричных цифры. Первая задаёт интенсивность красного, вторая - зеленого, третья синего. К примеру, #ff0000 - ярко-красный цвет, #ffff00 - ярко-желтый и так далее. Если все три оттенка одинаковые, то получаются оттенки серого, от черного (#000000) до белого (#ffffff).
С помощью опции -command задаётся команда, которая будет выполняться при нажатии на кнопку. Можно указать несколько команд, сгруппировав их фигурной скобкой. Но, я рекомендую всегда указывать не более одной команды, а лучше вызывать процедуру, так как в дальнейшем, при отладке и расширении программы это облегчит внесение изменений.
Синтаксис использования button аналогичен label и всем остальным виджетам. Стандартные опции для button:
Специфичные для button опции:
-command | |
Задаёт команду, которая будет выполняться при нажатии на кнопку. | |
-compound | |
Задаёт, как будут расположены текст и изображения, или как будут они расположены друг относительно друга. Возможные значения: bottom, center, left, none, right и top. Значение по умолчанию - none, значит, что button будет располагать текст или изображения в зависимости от опций -image и -bitmap | |
-default | |
Задаёт одно из трех возможных состояний кнопки по умолчанию: normal, active (кнопка по умолчанию) или disabled (отключена). | |
-height | |
Задаёт определенную высоту кнопки. Если значение не задано, то высота кнопки зависит от содержимого. | |
-overrelief | |
Задаёт альтернативный рельеф для кнопки, который будет использоваться когда мышь над виджетом. эта опция может использоваться для создания кнопок в toolbar (панель инструментов), задавая следущие опции: -relief flat -overrelief raised. Значение по умолчанию - пустая строка. | |
-state | |
Определяет состояние кнопки: normal (нормальное, отображается цветами заданными опциями foreground и background), active (нажатие Enter эквивалентно щелчку по кнопке, кнопка выделяется, кнопка рисуется цветами activeforeground и activebackground), disabled (кнопка отключена, отображается цветами disabledforeground и background). | |
-width | |
Задаёт определенную ширину кнопки. Если значение не задано, то ширина кнопки зависит от содержимого. |
Выполните пример, попробуйте сделать так, чтобы названия цветов писались по-русски и переходите к следующему уроку.
label .name -textvariable name pack .name -fill x foreach {clr} {red orange yellow green lightblue blue violet} { button .$clr -text $clr -bg $clr -command "set name $clr;\ .name configure -bg $clr" -relief groove pack .$clr -fill x } |
Горбачев "Yurez" Юрий |