Menubutton - это часть выпадающего меню, которая постоянно находится на экране. Каждый menubutton связан с виджетом Menu (см. выше), который может отображать пункты меню для этого menubutton, когда пользователь нажимает на него.
Чтобы создать Кнопку Меню в корневом окне или фрейме parent:
w = tk.Menubutton(parent, option, ...)
Конструктор возвращает новый виджет Menubutton. Опции:
Таблица 25. Опции виджета Menubutton
activebackground |
Цвет фона при наведении мыши на Menubutton. См. Раздел 5.3, "Цвета". |
activeforeground |
Цвет переднего плана цвет, когда мышь находится над menubutton. |
anchor |
Эта опция определяет, где будет располагаться текст, если виджет имеет больше места, чем требуется для текста. По умолчанию используется anchor=tk.CENTER, который выравнивает текст по центру. Другие параметры см. в Раздел 5.5, "Якоря". Например, если вы используете anchor=tk.W, текст будет отцентрирован относительно левой стороны виджета. |
bg или background |
Цвет фона, когда мышь не находится над menubutton. |
bitmap |
Чтобы отобразить битмап на menubutton, установите этот параметр на имя битмапа; смотрите Раздел 5.7, "Битовые изображения". |
bd или borderwidth |
Ширина границы вокруг menubutton. По умолчанию - два пикселя. Возможные значения см. в Раздел 5.1, "Размеры". |
compound |
Если вы указываете и текст, и графику (битмап или изображение), этот параметр определяет, где отображается графика относительно текста. Возможные значения: tk.NONE (значение по умолчанию), tk.TOP, tk.BOTTOM, tk.LEFT, tk.RIGHT и tk.CENTER. Например, compound=tk.RIGHT будет позиционировать графику справа от текста. Если вы укажете compound=tk.NONE, графика будет отображаться, но text (если таковой имеется) не будет. |
cursor |
Курсор, который появляется при наведении мыши на этот menubutton. См. Раздел 5.8, "Курсоры". |
direction |
Эта опция определяет в каком направлении будет расположено меню относительно menubutton. Обычно меню отображается под menubutton. Установите direction=tk.LEFT для отображения меню слева от кнопки; используйте direction=tk.RIGHT для отображения меню справа от кнопки; или используйте direction='above' для размещения меню над кнопкой. |
disabledforeground |
Цвет переднего плана color, отображаемый на этой menubutton, когда она отключена. |
fg или foreground |
Цвет переднего плана color, когда мышь не находится над menubutton. |
font |
Указывает шрифт, используемый для отображения текста; см. Раздел 5.4, "Шрифты". |
height |
Высота menubutton в строках текста (не в пикселях!). По умолчанию размер menubutton соответствует его содержимому. |
highlightbackground |
Цвет фокусного выделения, когда виджет не имеет фокуса. См. Раздел 53, "Фокус: маршрутизация ввода с клавиатуры". |
highlightcolor |
Цвет, отображаемый в подсветке фокуса, когда виджет имеет фокус. |
highlightthickness |
Толщина выделения фокусного выделения. |
image |
Чтобы отобразить изображение на этом menubutton, установите этот параметр для объекта Image. См. Раздел 5.9, "Изображения". |
justify |
Этот параметр управляет расположением текста, когда текст не заполняет всё пространство в menubutton: используйте justify=tk.LEFT, чтобы выровнять текст по левому краю (это используется по умолчанию); используйте justify=tk.CENTER, чтобы выровнять его по центру, или justify=tk.RIGHT, чтобы выровнять по правому краю. |
menu |
Чтобы связать menubutton с набором пунктов меню, установите этот параметр для объекта Menu, содержащего эти пункты меню. Этот объект меню должен быть создан путем передачи связанного с ним menubutton в конструктор в качестве первого аргумента. Ниже приведен пример, показывающий, как связать menubutton и меню. |
padx |
Сколько места оставить слева и справа от текста menubutton. По умолчанию 1. |
pady |
Сколько места оставить над и под текстом menubutton. По умолчанию равно 1. |
relief |
Обычно кнопки menubutton имеют вид tk.RAISED. Другие трехмерные эффекты см. в Раздел 5.6, " Стили рельефа". |
state |
Обычно кнопки menubutton реагируют на мышь. Установите state=tk.DISABLED, чтобы закрасить menubutton и сделать его не реагирующим на мышь. |
takefocus |
Обычно кнопки menubutton не принимают фокус клавиатуры (см. Раздел 53, "Фокус: маршрутизация ввода с клавиатуры"). Используйте takefocus=True, чтобы добавить menubutton в очередь обхода фокуса. |
text |
Чтобы отобразить текст на menubutton, установите этот параметр в строку, содержащую нужный текст. Новые строки ('\n') в строке будут вызывать разрывы строк. |
textvariable |
Вы можете связать управляющую переменную класса StringVar с этой menubutton. Установка этой управляющей переменной изменит отображаемый текст. См. раздел [Раздел 52, "Управляющие переменные: значения, скрывающиеся за виджетами"] (control-variables.html). |
underline |
Обычно под текстом на menubutton не появляется подчеркивание. Чтобы подчеркнуть один из символов, установите этот параметр на индекс этого символа. |
width |
Ширина menubutton в символах (не пикселях!). Если этот параметр не задан, размер кнопки будет соответствовать её содержимому. |
wraplength |
Обычно строки не переносятся. Вы можете задать число символов, и все строки будут разбиты на фрагменты не длиннее этого числа. |
Вот краткий пример создания menubutton и связанного с ним меню с двумя чекбоксами:
self.mb = tk.Menubutton(self, text='condiments',
relief=RAISED)
self.mb.grid()
self.mb.menu = tk.Menu(self.mb, tearoff=0)
self.mb['menu'] = self.mb.menu
self.mayoVar = tk.IntVar()
self.ketchVar = tk.IntVar()
self.mb.menu.add_checkbutton(label='mayo',
variable=self.mayoVar)
self.mb.menu.add_checkbutton(label='ketchup',
variable=self.ketchVar)
Этот пример создает menubutton с меткой condiments. При нажатии на нее выпадают две кнопки с надписями mayo и ketchup.