Spec-Zone.ru › Tcl/Tk

меню

ИМЯ
меню, tk_menuSetFocus — Создание и управление виджетами «меню» и строками меню
СИНТАКСИС
СТАНДАРТНЫЕ ПАРАМЕТРЫ
-activebackground, activeBackground, Цвет фона
-activeborderwidth, activeBorderWidth, Ширина рамки
-activeforeground, activeForeground, Цвет текста
-background or -bg, background, Цвет фона
-borderwidth or -bd, borderWidth, Ширина рамки
-cursor, cursor, Курсор
-disabledforeground, disabledForeground, Цвет текста (неактивное состояние)
-font, font, Шрифт
-foreground or -fg, foreground, Цвет текста
-relief, relief, Вид рамки
-takefocus, takeFocus, Получить фокус
ПАРАМЕТРЫ, СПЕЦИФИЧНЫЕ ДЛЯ ВИДЖЕТОВ
-postcommand, postCommand, Команда
-selectcolor, selectColor, Цвет выделения
-tearoff, tearOff, Отрыв
-tearoffcommand, tearOffCommand, Команда отрыва
-title, title, Заголовок
-type, type, Тип
ВВЕДЕНИЕ
ТИПЫ ЭЛЕМЕНТОВ
ЭЛЕМЕНТЫ КОМАНД
ЭЛЕМЕНТЫ РАЗДЕЛИТЕЛЕЙ
ЭЛЕМЕНТЫ ГАЛОЧЕК
ЭЛЕМЕНТЫ РАДИОКНОПОК
ЭЛЕМЕНТЫ СПИСКОВ
ЭЛЕМЕНТЫ ОТРЫВА
СТРОКИ МЕНЮ
СПЕЦИАЛЬНЫЕ МЕНЮ В СТРОКАХ МЕНЮ
КОПИИ
КОМАНДА ВИДЖЕТА
active
end
last
none
@число
число
шаблон
имяПути активировать индекс
имяПути добавить тип ?параметр значение параметр значение ...?
имяПути получить параметр
имяПути клонировать новоеИмяПути ?типКлонирования?
имяПути настроить ?параметр? ?значение параметр значение ...?
имяПути удалить индекс1 ?индекс2?
имяПути получитьЭлемент индекс параметр
имяПути настроитьЭлемент индекс ?параметры...?
имяПути индекс индекс
имяПути вставить индекс тип ?параметр значение параметр значение ...?
имяПути вызвать индекс
имяПути вывести x y
имяПути вывестиКаскад индекс
имяПути тип индекс
имяПути скрыть
имяПути положениеХ индекс
имяПути положениеY индекс
ПАРАМЕТРЫ ЭЛЕМЕНТОВ МЕНЮ
-activebackground значение
-activeforeground значение
-accelerator значение
-background значение
-bitmap значение
-columnbreak значение
-command значение
-compound значение
-font значение
-foreground значение
-hidemargin значение
-image значение
-indicatoron значение
-label значение
-menu значение
-offvalue значение
-onvalue значение
-selectcolor значение
-selectimage значение
-state значение
-underline значение
-value значение
-variable значение
НАСТРОЙКИ МЕНЮ
Сворачиваемые меню в строке меню
Сворачиваемые меню в кнопках меню
Появляющиеся меню
Меню выбора
Отрывыемые меню
ПОУМОЛЧАНИЮ ПРИВЯЗАННЫЕ КЛАВИШИ
ОШИБКИ
СМОТРИТЕ ТАКЖЕ
КЛЮЧЕВЫЕ СЛОВА

Имя

меню, tk_menuSetFocus — Создание и управление виджетами «меню» и строками меню

Синтаксис

менюимяПути ?параметры?
tk_menuSetFocusимяПути

Стандартные параметры

-activebackground, activeBackground, Цвет фона
-activeborderwidth, activeBorderWidth, Ширина рамки
-activeforeground, activeForeground, Цвет текста
-background or -bg, background, Цвет фона
-borderwidth or -bd, borderWidth, Ширина рамки
-cursor, cursor, Курсор
-disabledforeground, disabledForeground, Цвет текста (неактивное состояние)
-font, font, Шрифт
-foreground or -fg, foreground, Цвет текста
-relief, relief, Вид рамки
-takefocus, takeFocus, Получить фокус

Параметры, специфичные для виджетов

Имя в командной строке: -postcommand
Имя базы данных: postCommand
Класс базы данных: Command
Если этот параметр указан, он предоставляет Tcl-команду для выполнения каждый раз, когда меню открывается. Команда вызывается командой виджета post перед открытием меню. Обратите внимание, что в Tk 8.0 на Macintosh и Windows все пост-команды в системе меню выполняются до открытия любого из этих меню. Это связано с ограничениями менеджеров меню отдельных платформ.
Имя в командной строке: -selectcolor
Имя базы данных: selectColor
Класс базы данных: Background
Для пунктов меню, которые являются флажками или радиокнопками, этот параметр задает цвет, отображаемый в индикаторе, когда флажок или радиокнопка выбраны.
Имя в командной строке: -tearoff
Имя базы данных: tearOff
Класс базы данных: TearOff
Этот параметр должен иметь правильное булево значение, которое указывает, следует ли включать в меню запись для отделения от основной части. Если это так, она будет существовать как запись 0 меню, а остальные записи будут пронумерованы начиная с 1. Стандартные привязки меню обеспечивают отделение меню при вызове записи для отделения. Этот параметр игнорируется в Aqua/Mac OS X, где меню не могут быть отделены.
Имя в командной строке: -tearoffcommand
Имя базы данных: tearOffCommand
Класс базы данных: TearOffCommand
Если этот параметр имеет ненулевое значение, он указывает Tcl-команду, которая должна вызываться всякий раз, когда меню отделяется. Фактическая команда будет состоять из значения этого параметра, за которым следует пробел, имя окна меню, за которым следует пробел, имя созданного отделенного окна меню. Например, если значение параметра — «a b», и меню .x.y отделяется для создания нового меню .x.tearoff1, тогда будет вызвана команда «a b .x.y .x.tearoff1». Этот параметр игнорируется в Aqua/Mac OS X, где меню не могут быть отделены.
Имя в командной строке: -title
Имя базы данных: title
Класс базы данных: Title
Строка будет использоваться в качестве заголовка окна, созданного при отделении этого меню. Если заголовок NULL, то окно будет иметь заголовок menubutton или текст пункта каскада, из которого было вызвано это меню.
Имя в командной строке: -type
Имя базы данных: type
Класс базы данных: Type
Этот параметр может быть menubar, tearoff или normal и устанавливается при создании меню. Хотя строка, возвращаемая базой данных конфигурации, изменится, если этот параметр изменён, это не повлияет на поведение виджета меню. Это используется механизмом клонирования и обычно не устанавливается вне библиотеки Tk.

Введение

Команда menu создаёт новое окно верхнего уровня (заданное аргументом pathName) и делает его виджетом меню. Этот виджет меню может быть использован как всплывающее окно или применён к toplevel (с параметром -menu), чтобы сделать его строкой меню для этого toplevel. Дополнительные параметры, описанные выше, могут быть указаны в командной строке или в базе данных параметров для настройки аспектов меню, таких как цвета и шрифт. Команда menu возвращает свой аргумент pathName. В момент вызова этой команды не должно существовать окна с именем pathName, но родитель pathName должен существовать.

Меню — это виджет, который отображает набор однострочных записей, расположенных в одной или нескольких колонках. Существует несколько различных типов записей, каждая со своими свойствами. Записи разных типов могут быть объединены в одном меню. Пункты меню не являются теми же, что виджеты записей. Фактически, записи меню не являются отдельными виджетами; всё меню — один виджет.

Пункты меню отображаются до трёх отдельных полей. Главное поле — это метка в виде строки текста, битовой карты или изображения, управляемая параметрами -label, -bitmap и -image для записи. Если для записи указан параметр -accelerator, то второе текстовое поле отображается справа от метки. Акселератор обычно описывает последовательность нажатий клавиш, которые могут быть введены в приложении, чтобы вызвать тот же результат, что и вызов пункта меню. Третье поле — это индикатор. Индикатор присутствует только для записей флажков или радиокнопок. Он указывает, выбрана ли запись, и отображается слева от строки записи.

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

Записи могут быть отключены, что приводит к отображению их меток и акселераторов более тусклыми цветами. Стандартные привязки меню не позволят активировать или вызвать отключенную запись. Отключённые записи могут быть повторно включены, в этот момент они станут доступными для активации и вызова.

Всякий раз, когда активная запись меню меняется, в меню отправляется виртуальное событие <<MenuSelect>>. Тогда активный элемент можно запросить у меню, и выполнить действие, такое как установка контекстно-зависимой справки для записи.

Типы записей

Записи команд

Наиболее распространённый вид записи меню — это запись команды, которая ведёт себя как виджет кнопки. Когда запись команды вызывается, выполняется Tcl-команда. Tcl-команда задаётся параметром -command.

Записи разделителей

Разделитель — это запись, которая отображается как горизонтальная разделительная линия. Разделитель не может быть активирован или вызван, и он не имеет поведения, кроме визуального.

Записи флажков

Запись флажка в меню ведёт себя как виджет флажка. При вызове она переключается между выбранным и невыбранным состояниями. Когда запись выбрана, определённое значение сохраняется в определённой глобальной переменной (как задаётся параметрами -onvalue и -variable для записи); когда запись не выбрана, другое значение (заданное параметром -offvalue) сохраняется в глобальной переменной. В записи флажка отображается индикатор слева от метки. Если запись выбрана, центр индикатора отображается в цвете, заданном параметром -selectcolor для записи; в противном случае центр индикатора отображается в цвете фона меню. Если для записи флажка указан параметр -command, его значение оценивается как Tcl-команда каждый раз, когда запись вызывается; это происходит после переключения выбранного состояния записи.

Записи радиокнопок

Запись радиокнопки в меню ведёт себя как виджет радиокнопки. Записи радиокнопок организованы в группы, из которых только одна запись может быть выбрана одновременно. Всякий раз, когда определённая запись становится выбранной, она сохраняет определённое значение в определённой глобальной переменной (как задаётся параметрами -value и -variable для записи). Это действие приводит к тому, что любая ранее выбранная запись в той же группе отменяет свой выбор. После того, как запись стала выбранной, любое изменение связанной с ней переменной заставит запись отменить свой выбор. Группировка записей радиокнопок определяется их связанными переменными: если две записи имеют одну и ту же связанную переменную, то они находятся в одной группе. Индикатор ромба отображается слева от метки в каждой записи радиокнопки. Если запись выбрана, центр индикатора отображается в цвете, заданном параметром -selectcolor для записи; в противном случае центр индикатора отображается в цвете фона меню. Если для записи радиокнопки указан параметр -command, его значение оценивается как Tcl-команда каждый раз, когда запись вызывается; это происходит после выбора записи.

Записи каскада

Запись каскада — это запись с связанным меню (заданным параметром -menu). Записи каскада позволяют создавать каскадные меню. Команда виджета postcascade может использоваться для открытия и закрытия связанного меню рядом с записью каскада. Связанное меню должно быть дочерним по отношению к меню, содержащему запись каскада (это необходимо для правильной работы перехода по меню).

Запись каскада открывает связанное меню, вызывая Tcl-команду вида

menu post x y
где menu — имя пути связанного меню, а x и y — координаты правого верхнего угла записи каскада в окне корня. В Unix нижнее меню закрывается путём выполнения Tcl-команды вида
menu unpost
где menu — имя связанного меню. На других платформах родной код платформы позаботится о закрытии меню.

Если для записи каскада указан параметр -command, он оценивается как Tcl-команда при каждом вызове записи. Это не поддерживается в Windows.

Записи отделения

Запись отделения появляется в верхней части меню, если она включена с помощью параметра -tearoff. Она не похожа на другие записи меню, так как её нельзя создать с помощью команды виджета add и нельзя удалить с помощью команды delete. Когда создаётся запись отделения, она отображается как пунктирная линия в верхней части меню. Согласно стандартным привязкам, вызов записи отделения создаёт копию меню и всех его подменю.

Панели меню

Любое меню может быть установлено как панель меню для окна toplevel (см. команду toplevel для синтаксиса). В Macintosh, когда toplevel находится спереди, пункты каскада этого меню будут отображаться в строке меню в верхней части основного монитора. В Windows и Unix пункты этого меню будут отображаться в строке меню в верхней части окна. Эти меню будут вести себя в соответствии с рекомендациями интерфейса своих платформ. Для каждого меню, установленного как панель меню, создаётся клонированное меню. См. раздел КЛОНЫ для получения дополнительной информации.

Как отмечалось, панели меню могут вести себя по-разному на разных платформах. Пример этого касается обработки флажков и радиокнопок в меню. Хотя разрешено размещать эти элементы меню на панелях меню, они могут не отображаться с индикаторами на некоторых платформах из-за системных ограничений.

Специальные меню в панелях меню

Определённые меню в панели меню будут обрабатываться особым образом. В Macintosh предоставляется доступ к специальным меню «Приложение», «Окно» и «Справка». В Windows предоставляется доступ к системному меню Windows в каждом окне. В X Windows может быть предоставлено специальное правое меню справки, если включена совместимость меню Motif. Во всех случаях эти меню должны быть созданы с именем команды меню панели меню, соединённым со специальным именем. Таким образом, для панели меню с именем .menubar в Macintosh специальные меню будут .menubar.apple, .menubar.window и .menubar.help; в Windows — .menubar.system; в X Windows — меню справки будет .menubar.help.

Когда Tk видит меню .menubar.apple как первое меню в строке меню на Macintosh, содержимое этого меню формирует первые элементы меню «Приложение» всякий раз, когда окно, содержащее строку меню, находится в фокусе. После всех элементов, определенных Tk, в меню будет разделитель, а затем все стандартные элементы меню «Приложение». Такое меню .apple должно быть присутствовать в меню при первой его конфигурации как строки меню верхнего уровня, в противном случае в строке меню будет вставлено стандартное меню «Приложение» (скрытое от Tk), и последующее добавление меню .apple больше не приведет к тому, что оно станет меню «Приложение».

Когда Tk видит меню .menubar.window на Macintosh, его содержимое вставляется в стандартное меню «Окно» строки меню пользователя всякий раз, когда строка меню окна находится в фокусе. Первые элементы меню предоставляются Mac OS X, а имена текущих окон автоматически добавляются после всех элементов, определенных Tk, и разделителя.

Когда Tk видит меню .menubar.help на Macintosh, его содержимое добавляется к стандартному меню «Справка» строки меню пользователя всякий раз, когда строка меню окна находится в фокусе. Первые элементы меню предоставляются Mac OS X.

При отображении меню «Система» в Windows его элементы добавляются к системному меню, к которому прикреплена строка меню. Это меню привязано к значку приложения и может быть вызвано с помощью мыши или нажатием клавиш Alt+Пробел. Из-за ограничений API Windows любые изменения шрифта, цвета, изображения, растровые изображения или изображения для отрыва меню не будут отображаться в системном меню.

Когда Tk видит меню «Справка» на X Windows и включена совместимость меню Motif, меню перемещается в конец строки меню и выравнивается вправо. Совместимость с меню Motif включена путем установки параметра Tk *Menu.useMotifHelp в значение true или путем вызова tk::classic::restore menu.

Копии

Когда меню устанавливается как строка меню для окна верхнего уровня или когда меню отделяется, создается копия меню. Эта копия является элементом-меню со своими собственными характеристиками, но она является дочерним элементом оригинального меню. Изменения в конфигурации оригинала отражаются в копии. Кроме того, все каскадные элементы, на которые указывает меню, также копируются, чтобы перемещение по меню работало правильно. Копии уничтожаются при исчезновении отрываемого меню или строки меню, а также при уничтожении оригинального меню.

Команда виджета

Команда menu создает новую команду Tcl, имя которой pathName. Эта команда может быть использована для вызова различных операций над виджетом. Она имеет следующий общий вид:
pathName option ?arg arg ...?
Option и args определяют точное поведение команды.

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

active
Указывает на элемент, который в данный момент активен. Если ни один элемент не активен, эта форма эквивалентна none. Эта форма не может быть сокращена.
end
Указывает на самый нижний элемент в меню. Если в меню нет элементов, эта форма эквивалентна none. Эта форма не может быть сокращена.
last
То же, что и end.
none
Указывает на «отсутствие элемента»; это наиболее часто используется с опцией activate для деактивации всех элементов в меню. В большинстве случаев указание none не приводит к каким-либо действиям в команде виджета. Эта форма не может быть сокращена.
@number
В этом формате number рассматривается как координата y в окне меню; используется элемент, наиболее близкий к этой координате y. Например, «@0» указывает на самый верхний элемент в окне.
number
Указывает на элемент по порядковому номеру, где 0 соответствует самому верхнему элементу меню, 1 — элементу ниже него и так далее.
pattern
Если индекс не соответствует ни одному из вышеперечисленных форматов, используется этот формат. Pattern сопоставляется с меткой каждого элемента меню, последовательно сверху вниз, пока не будет найден соответствующий элемент. Используются правила сопоставления строк.

Если индекс может соответствовать нескольким из вышеуказанных форматов, то приоритет отдается формату, расположенному выше в списке.

Для виджетов меню возможны следующие команды виджетов:

pathName activate index
Изменить состояние записи, указанной index, на активное и повторно отобразить её с помощью активных цветов. Любая ранее активная запись будет деактивирована. Если index задан как none, или если указанная запись отключена, то меню останется без активной записи. Возвращает пустую строку.
pathName add type ?option value option value ...?
Добавить новую запись в конец меню. Тип новой записи задаётся параметром type и должен быть одним из: cascade, checkbutton, command, radiobutton или separator, или уникальным сокращением одного из вышеперечисленных. Если присутствуют дополнительные аргументы, они указывают параметры, перечисленные в разделе ПАРАМЕТРЫ ЭЛЕМЕНТОВ МЕНЮ ниже. Команда виджета add возвращает пустую строку.
pathName cget option
Возвращает текущее значение параметра конфигурации, заданного option. Option может принимать любые значения, допускаемые командой menu.
pathName clone newPathname ?cloneType?
Создаёт копию текущего меню с именем newPathName. Эта копия — самостоятельное меню, но любые изменения в копии распространяются на оригинальное меню и наоборот. cloneType может быть normal, menubar или tearoff. Обычно не следует вызывать эту команду вне библиотеки Tk. Дополнительную информацию см. в разделе КОПИИ.
pathName configure ?option? ?value option value ...?
Запрос или изменение параметров конфигурации виджета. Если option не указан, возвращается список, описывающий все доступные параметры для pathName (см. Tk_ConfigureInfo для информации о формате этого списка). Если option указан без value, команда возвращает список, описывающий указанный параметр (этот список будет идентичен соответствующему подсписку возвращаемого значения, если option не указан). Если указаны одна или несколько пар option-value, команда изменяет заданные параметр(ы) виджета на указанные значения; в этом случае команда возвращает пустую строку. Option может принимать любые значения, допускаемые командой menu.
pathName delete index1 ?index2?
Удалить все записи меню между index1 и index2 включительно. Если index2 опущен, он по умолчанию равен index1. Попытки удалить запись меню tear-off игнорируются (вместо этого нужно изменить параметр -tearoff для удаления записи tear-off).
pathName entrycget index option
Возвращает текущее значение параметра конфигурации для записи, заданной index. Option может иметь любое имя, описанное в разделе ПАРАМЕТРЫ ЭЛЕМЕНТОВ МЕНЮ ниже.
pathName entryconfigure index ?options...?
Эта команда аналогична команде configure, за исключением того, что она применяется к параметрам отдельной записи, тогда как configure применяется к параметрам меню в целом. Options могут иметь любые значения, описанные в разделе ПАРАМЕТРЫ ЭЛЕМЕНТОВ МЕНЮ ниже. Если options указаны, параметры изменяются, как указано в команде, и команда возвращает пустую строку. Если options не указаны, возвращается список, описывающий текущие параметры записи index (см. Tk_ConfigureInfo для информации о формате этого списка).
pathName index index
Возвращает числовой индекс, соответствующий index, или none, если index был задан как none.
pathName insert index type ?option value option value ...?
То же, что и команда виджета add, за исключением того, что новая запись вставляется перед записью, заданной index, вместо добавления в конец меню. Аргументы type, option и value интерпретируются так же, как и для команды виджета add. Невозможно вставить новые записи меню перед записью tear-off, если меню имеет такую запись.
pathName invoke index
Вызвать действие элемента меню. Подробности о том, что происходит, см. в разделах по отдельным записям выше. Если элемент меню отключён, ничего не происходит. Если у элемента есть связанная с ним команда, результат этой команды возвращается как результат команды виджета invoke. В противном случае результатом является пустая строка. Примечание: вызов элемента меню не приводит к автоматическому закрытию меню; стандартные привязки обычно позаботятся об этом до вызова команды виджета invoke.
pathName post x y
Разместить меню на экране по координатам корневого окна x и y. Эти координаты корректируются при необходимости, чтобы гарантировать видимость всего меню на экране. Эта команда обычно возвращает пустую строку. Если указан параметр -postcommand, его значение выполняется как Tcl-скрипт перед отображением меню, и результат этого скрипта возвращается как результат команды виджета post. Если при выполнении команды произошла ошибка, ошибка возвращается без отображения меню.
pathName postcascade index
Отображает подменю, связанное с записью cascade, заданной index, и закрывает любое ранее открытое подменю. Если index не соответствует записи cascade или pathName не открыто, команда не оказывает никакого влияния, кроме закрытия любого открытого в данный момент подменю.
pathName type index
Возвращает тип записи меню, заданной index. Это аргумент type, переданный в команду виджета add или insert при создании записи, например, command или separator, или tearoff для записи tear-off.
pathName unpost
Скрыть окно, чтобы оно больше не отображалось. Если открыто подменю более низкого уровня, это подменю также закрывается. Возвращает пустую строку. Эта подкоманда не работает в Windows и на Macintosh, так как эти платформы имеют собственный способ закрытия меню.
pathName xposition index
Возвращает строку с десятичным значением, задающей координату x в окне меню левого пикселя в записи, указанной index.
pathName yposition index
Возвращает строку с десятичным значением, задающей координату y в окне меню верхнего пикселя в записи, указанной index.

Параметры элементов меню

Следующие параметры допускаются для элементов меню. Большинство параметров не поддерживаются всеми типами записей.
-activebackground значение
Указывает цвет фона, используемый для отображения этой записи, когда она активна. Если этот параметр задан как пустая строка (по умолчанию), используется параметр -activebackground для всего меню. Если переменная tk_strictMotif была установлена для запроса строгого соответствия Motif, этот параметр игнорируется, и вместо него используется параметр -background. Этот параметр недоступен для разделителей или отрывных записей.
-activeforeground значение
Указывает цвет переднего плана, используемый для отображения этой записи, когда она активна. Если этот параметр задан как пустая строка (по умолчанию), используется параметр -activeforeground для всего меню. Этот параметр недоступен для разделителей или отрывных записей.
-accelerator значение
Указывает строку, отображаемую справа от записи меню. Обычно описывает последовательность нажатия клавиш, которая может быть набрана для вызова той же функции, что и запись меню. Этот параметр недоступен для разделителей или отрывных записей.
-background значение
Указывает цвет фона, используемый для отображения этой записи в обычном состоянии (ни активном, ни отключенном). Если этот параметр задан как пустая строка (по умолчанию), используется параметр -background для всего меню. Этот параметр недоступен для разделителей или отрывных записей.
-bitmap значение
Указывает пиктограмму для отображения в меню вместо текстовой метки, в любом из форматов, принимаемых Tk_GetBitmap. Этот параметр переопределяет параметр -label (как управляется параметром -compound), но может быть сброшен на пустую строку, чтобы включить отображение текстовой метки. Если указан параметр -image, он переопределяет -bitmap. Этот параметр недоступен для разделителей или отрывных записей.
-columnbreak значение
Когда этот параметр равен нулю, запись отображается под предыдущей записью. Когда этот параметр равен единице, запись отображается вверху нового столбца в меню. Этот параметр игнорируется в Aqua/Mac OS X, где меню всегда имеют один столбец.
-command значение
Указывает Tcl-команду, которую нужно выполнить при вызове записи меню. Недоступен для разделителей или отрывных записей.
-compound значение
Указывает, должна ли запись меню отображать как изображение, так и текст, и если да, то где изображение должно быть расположено относительно текста. Допустимые значения для этого параметра: bottom, center, left, none, right и top. Значение по умолчанию — none, что означает, что кнопка будет отображать либо изображение, либо текст, в зависимости от значений параметров -image и -bitmap.
-font значение
Указывает шрифт, который следует использовать при отрисовке метки или строки ускорителя в этой записи. Если этот параметр задан как пустая строка (по умолчанию), используется параметр -font для всего меню. Этот параметр недоступен для разделителей или отрывных записей.
-foreground значение
Указывает цвет переднего плана, используемый для отображения этой записи в обычном состоянии (ни активном, ни отключенном). Если этот параметр задан как пустая строка (по умолчанию), используется параметр -foreground для всего меню. Этот параметр недоступен для разделителей или отрывных записей.
-hidemargin значение
Указывает, должны ли отображаться стандартные отступы для этой записи меню. Это полезно при создании палитры с изображениями в ней, например, цветовых палитр, палитр узоров и т. д. 1 указывает, что отступ для записи скрыт; 0 означает, что отступ используется.
-image значение
Указывает изображение для отображения в меню вместо текстовой строки или пиктограммы. Изображение должно быть создано с помощью предыдущего вызова image create. Этот параметр переопределяет параметры -label и -bitmap (как управляется параметром -compound), но может быть сброшен на пустую строку, чтобы включить отображение текстовой или пиктографической метки. Этот параметр недоступен для разделителей или отрывных записей.
-indicatoron значение
Доступно только для записей флажков и радиокнопок. Значение — логическое значение, которое определяет, отображать ли индикатор.
-label значение
Указывает строку, которая будет отображаться в качестве идентифицирующей метки в записи меню. Недоступен для разделителей или отрывных записей.
-menu значение
Доступно только для записей каскада. Указывает имя пути подменю, связанного с этой записью. Подменю должно быть дочерним элементом меню.
-offvalue значение
Доступно только для записей флажков. Указывает значение, которое нужно сохранить в связанной переменной записи, когда запись снята с выбора.
-onvalue значение
Доступно только для записей флажков. Указывает значение, которое нужно сохранить в связанной переменной записи, когда запись выбрана.
-selectcolor значение
Доступно только для записей флажков и радиокнопок. Указывает цвет, отображаемый в индикаторе, когда запись выбрана. Если значение — пустая строка (по умолчанию), то цвет индикатора определяется параметром -selectcolor для меню.
-selectimage значение
Доступно только для записей флажков и радиокнопок. Указывает изображение, отображаемое в записи (вместо параметра -image), когда она выбрана. Значение — имя изображения, которое должно быть создано с помощью предыдущего вызова image create. Этот параметр игнорируется, если не задан параметр -image.
-state значение
Указывает одно из трех состояний записи: normal, active или disabled. В нормальном состоянии запись отображается с использованием параметра -foreground для меню и параметра -background из записи или меню. Состояние активного обычно используется, когда указатель находится над записью. В активном состоянии запись отображается с использованием параметра -activeforeground для меню вместе с параметром -activebackground из записи. Отключенное состояние означает, что запись должна быть неактивной: стандартные привязки откажутся активировать или вызвать запись. В этом состоянии запись отображается в соответствии с параметром -disabledforeground для меню и параметром -background из записи. Этот параметр недоступен для разделителей.
-underline значение
Указывает целочисленный индекс символа, который нужно подчеркнуть в записи. Этот параметр также запрашивается стандартными привязками и используется для реализации перемещения по клавиатуре. 0 соответствует первому символу текста, отображаемого в записи, 1 — следующему символу и так далее. Если в записи отображается пиктограмма или изображение, этот параметр игнорируется. Этот параметр недоступен для разделителей или отрывных записей.
-value значение
Доступно только для записей радиокнопок. Указывает значение, которое нужно сохранить в связанной переменной записи, когда запись выбрана. Если задана пустая строка, то в качестве значения, хранящегося в переменной, используется параметр -label для записи.
-variable значение
Доступно только для записей флажков и радиокнопок. Указывает имя глобальной переменной, которая должна быть установлена, когда запись выбрана. Для записей флажков переменная также устанавливается, когда запись снята с выбора. Для записей радиокнопок изменение переменной приводит к тому, что текущая выбранная запись снимает себя с выбора.

Для записей флажков значение по умолчанию этого параметра берется из параметра -label, а для записей радиокнопок используется одно фиксированное значение. Рекомендуется всегда задавать параметр -variable при создании записи флажка или радиокнопки.

Конфигурации меню

По умолчанию привязки поддерживают четыре способа использования меню:
Выпадающие меню в строке меню
Это наиболее распространенный случай. Вы создаете виджет меню, который станет строкой меню. Затем вы добавляете записи каскада в это меню, указывая выпадающие меню, которые вы хотите использовать в своей строке меню. Затем вы создаете все выпадающие меню. После этого укажите меню с помощью параметра -menu команды виджета toplevel. См. справку toplevel для получения подробностей.
Выпадающие меню в кнопках меню
Это совместимый способ создания строк меню. Вы создаете один виджет menubutton для каждого верхнего уровня меню, и обычно вы располагаете ряд menubutton кнопок в строке в окне menubar. Вы также создаете верхние меню и любые каскадные подменю и связываете их с помощью параметров -menu в menubutton и записях каскадного меню. Верхнее меню должно быть дочерним элементом menubutton, а каждое подменю должно быть дочерним элементом меню, которое на него ссылается. После этого стандартные привязки позволят пользователям проходить по дереву меню и вызывать его через menubutton; см. справку menubutton для получения подробностей.
Контекстные меню
Контекстные меню обычно отображаются в ответ на нажатие кнопки мыши или клавиши. Вы создаете контекстные меню и любые каскадные подменю, затем вызываете процедуру tk_popup в соответствующее время, чтобы отобразить верхнее меню.
Меню выбора
Меню выбора состоит из menubutton с связанным меню, которое позволяет выбрать одно из нескольких значений. Текущее значение отображается в menubutton и также сохраняется в глобальной переменной. Используйте процедуру tk_optionMenu для создания кнопок menubutton и их меню.
Отрывные меню
Отрывное меню создается путем вызова записи отрыва в верхней части существующего меню. Стандартные привязки создадут новое меню, которое будет копией исходного меню, и оставят его постоянно открытым в виде окна верхнего уровня. Отрывное меню ведет себя так же, как и исходное меню.

Стандартные привязки

Tk автоматически создает привязки класса для меню, которые предоставляют им следующее поведение по умолчанию:
  1. При входе курсора мыши в меню, элемент под курсором активируется; при перемещении мыши по меню активный элемент изменяется, отслеживая перемещение мыши.
  2. При выходе курсора мыши из меню все элементы меню деактивируются, за исключением специального случая, когда курсор перемещается из меню в каскадное подменю.
  3. При отпускании кнопки мыши над меню, активный элемент (если таковой есть) вызывается. Меню также закрывается, если это не отрывное меню.
  4. Кнопки Пробел и Возврат вызывают активный элемент и закрывают меню.
  5. Если у элементов меню есть подчеркнутые буквы с опцией -underline, то нажатие одной из подчеркнутых букв (или ее заглавной или строчной версии) вызывает этот элемент и закрывает меню.
  6. Кнопка Esc прерывает процесс выбора в меню, не вызывая какой-либо элемент. Она также закрывает меню, если это не отрывное меню.
  7. Кнопки Вверх и Вниз активируют следующий выше или ниже элемент в меню. Когда достигается конец меню, активный элемент переходит к другому концу.
  8. Кнопка Влево переходит к следующему меню слева. Если текущее меню является каскадным подменю, то подменю закрывается, а текущий элемент меню становится элементом каскада в родительском меню. Если текущее меню открыто из кнопки меню, то текущая кнопка меню закрывается, и открывается следующая кнопка меню слева. В противном случае действие клавиши не влияет. Порядок кнопок меню слева направо определяется их порядком стекирования: Tk предполагает, что самая нижняя кнопка меню (по умолчанию первая созданная) находится слева.
  9. Кнопка Вправо переходит к следующему меню справа. Если текущий элемент является элементом каскада, то подменю открывается, и текущий элемент меню становится первым элементом в подменю. В противном случае, если текущее меню было открыто из кнопки меню, то текущая кнопка меню закрывается, и открывается следующая кнопка меню справа.

Отключенные элементы меню не реагируют: они не активируются и игнорируют нажатия и отпускания кнопок мыши.

Несколько привязок используют команду tk_menuSetFocus. Она сохраняет текущий фокус и устанавливает фокус на ее аргумент pathName, который является виджетом меню.

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

Ошибки

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

См. также

bind, menubutton, ttk::menubutton, toplevel

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TkCmd/menu.htm

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TkCmd/menu.htm

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API