Виджет Menu
Меню – это виджет, который присутствует во многих пользовательских приложениях. Находится оно под строкой заголовка и представляет собой выпадающие списки под словами-пунктами меню. Пункты конечных списков представляют собой команды, обычно выполняющие какие-либо действия или открывающие диалоговые окна.
В tkinter экземпляр меню создается от класса Menu , далее его надо привязать к виджету, на котором оно будет расположено. Обычно таковым выступает главное окно приложения. Его опции menu присваивается экземпляр Menu через имя связанной с экземпляром переменной.
Если выполнить данный код, то никакого меню вы не увидите. Только тонкую полоску под заголовком окна, ведь ни одного пункта меню не было создано. Метод add_command добавляет пункт меню:
В данном случае «Файл» и «Справка» – это команды. К ним можно добавить опцию command , связав тем самым с какой-либо функцией-обработчиком клика. Хотя такой вариант меню имеет право на существование, в большинстве приложений панель меню содержит выпадающие списки команд, а сами пункты на панели командами по сути не являются. Клик по ним приводит лишь к раскрытию соответствующего списка.
В Tkinter проблема решается созданием новых экземпляров Menu и подвязыванием их к главному меню с помощью метода add_cascade .
На основное меню mainmenu , добавляются не команды, а другие меню. У filemenu и helpmenu в качестве родительского виджета указывается не root , а mainmenu . Команды добавляются только к дочерним меню. Значение 0 опции tearoff отключает возможность открепления подменю, иначе его можно было бы делать плавающим кликом мыши по специальной линии. В случае tearoff=0 она отсутствует.
Точно также можно подвязывать дочерние меню к filemenu и helpmenu , создавая многоуровневые списки пунктов меню.
Метод add_separator добавляет линию разделитель в меню. Используется для визуального разделения групп команд.
В tkinter можно создать всплывающее меню, оно же контекстное (если настроить его появление по клику правой кнопкой мыши). Для этого экземпляр меню подвязывается не через опцию menu к родительскому виджету, а к меню применяется метод post , аргументами которого являются координаты того места, где должно появляться меню.
Здесь при клике на холсте правой кнопкой мыши в этой точке всплывает меню. При выборе пункта меню рисуется соответствующая фигура в этом же месте.
Практическая работа
Измените программу из практической работы предыдущего урока так, чтобы открытие и сохранение файлов выполнялось не через экземпляры Button , а через Menu . Команду очистки текстового поля поместите в контекстное меню.
Курс с примерами решений практических работ: android-приложение, pdf-версия.
Как сделать меню в питоне

- Главная /
- PYTHON /
- tkinter меню python
tkinter меню python

Всем привет. В данной статье мы рассмотрим создание меню программы в пользовательском интерфейсе на языке программирования python с использованием библиотеки tkinter. Итак, поехали!
Для того чтобы создать меню мы должны воспользоваться специальным виджетом Menu:

C помощью данного кода мы создадим окно программы в самом верху которого будет меню с одной единственной кнопкой создать.
menu = Menu(window) — данной строчкой мы создает элемент меню в качестве элемента window выступает главное окно.
window.config(menu=menu) — здесь добавляем элемент меню в главное окно.
menu.add_command(label=»Создать») — через метод add_command() добавляем в меню кнопку с названием 'Создать'.
Мы можем добавлять в меню сколько угодно кнопок через методы add_command() или метод add_cascade(). С помощью метода add_cascade() мы можем создавать развертывающиеся меню. Пример:

Здесь мы создали еще одну кнопку 'Файл' в нашем меню. Обратите внимание что сделали мы это через метод add_cascade() в котором указали название кнопки и ссылку на элемент submenu. Элемент submenu мы создали и добавили в него две кнопки 'Сохранить' и 'Сохранить как'.
В результате у нас получилось меню с кнопками 'Файл' и 'Создать', если мы кликнем по кнопке 'Файл' у нас развернется список где будут еще две кнопки 'Сохранить' и 'Сохранить как'.
Вот так с помощью библиотеки tkinter мы можем реализовать меню программы. Следовательно зачем нам нужны кнопки которые ничего не делают?!
Напоследок давайте разберем как вешать на кнопки события. Для того чтобы повесить событие на кнопку необходимо в метод add_cascade() добавить параметр command который должен равняться функции которая будет вызвана при нажатии кнопки. Пример:
Здесь мы на каждую добавленную кнопку с помощью метода add_command() повесили событие(команду) которая вызывает определенную функцию. В результате у нас при нажатии на кнопку выводится ее название.
Заметьте что здесь мы добавили метод label для вывода названия кнопки.
На этом данная статья подошла к концу. Я желаю вам успехов и удачи! Пока!
Оцените статью:
Статьи
Комментарии
Внимание. Комментарий теперь перед публикацией проходит модерацию
Все комментарии отправлены на модерацию

Запись экрана
Данное расширение позволяет записывать экран и выводит видео в формате webm
# Menu — виджет меню
Меню – это виджет, который присутствует во многих пользовательских приложениях. Находится оно под строкой заголовка и представляет собой выпадающие списки под словами — пунктами меню. Пункты конечных списков представляют собой команды, обычно выполняющие какое-либо действия или открывающие диалоговые окна.
Меню может содержать много элементов, причем эти элементы сами могут представлять меню и содержать другие элементы. В зависимости от того, какой тип элементов мы хотим добавить в меню, будет отличаться метод, используемый для их добавления. В частности, нам доступны следующие методы:
- add_command(options): добавляет элемент меню через параметр options
- add_cascade(options): добавляет элемент меню, который в свою очередь может представлять подменю
- add_separator(): добавляет линию-разграничитель
- add_radiobutton(options): добавляет в меню переключатель
- add_checkbutton(options): добавляет в меню флажок
# Menu() — Главное меню
В tkinter экземпляр меню создается от класса Menu, далее его надо привязать к виджету, на котором оно будет расположено. Обычно таковым выступает главное окно приложения. Его опции menu присваивается экземпляр Menu через имя связанной с экземпляром переменной:
Если выполнить данный код, то никакого меню вы не увидите. Только тонкую полоску под заголовком окна, ведь ни одного пункта меню не было создано. Метод add_command() добавляет пункт меню:
В данном случае «Файл» и «Справка» – это команды. К ним можно добавить опцию command, связав тем самым с какой-либо функцией-обработчиком клика. Хотя такой вариант меню имеет право на существование, в большинстве приложений панель меню содержит выпадающие списки команд, а сами пункты на панели командами по сути не являются. Клик по ним приводит лишь к раскрытию соответствующего списка.
# Упражнения
Создайте визуально похожее меню программы блокнот или skype.



Реализуйте генерацию меню. Образец меню записан в виде массива:
# Подменю — Submenu
Подменю — это меню, подключенное к другому объекту меню.
В tkinter проблема решается созданием новых экземпляров Menu и подвязыванием их к главному меню с помощью метода add_cascade() :
На основное меню mainmenu , добавляются не команды, а другие меню. У filemenu и helpmenu в качестве родительского виджета указывается не root , а mainmenu . Команды добавляются только к дочерним меню. Значение 0 опции tearoff отключает возможность открепления подменю, иначе его можно было бы делать плавающим кликом мыши по специальной линии (в случае tearoff=0 она отсутствует).
Точно также можно подвязывать дочерние меню к filemenu и helpmenu , создавая многоуровневые списки пунктов меню:
Метод add_separator() добавляет линию разделитель в меню. Используется для визуального разделения групп команд.
# Взаимодействие с меню
Отличительной особенностью элементов меню является способность реагировать на нажатия пользователя. Для этого у каждого элемента меню можно задать параметр command , который устанавливает ссылку на функцию, выполняемую при нажатии:
# Контекстное меню — Popup menu
В следующем примере мы создаем всплывающее меню. Всплывающее меню также называется контекстным меню. Это может быть показано в любом месте на клиентской области окна:
В нашем примере мы создаем всплывающее меню с двумя командами:
- контекстное меню — это обычный виджет меню. Функция отрыва отключена. Теперь невозможно разделить меню на новое окно верхнего уровня:
- Мы связываем событие <Button-3> с методом showMenu() . Событие генерируется, когда мы щелкаем правой кнопкой мыши на клиентской области окна:
- Метод showMenu() показывает контекстное меню. Всплывающее меню отображается в координатах x и y щелчка мыши:
Результат выполнения может:
В tkinter можно создать всплывающее меню и настроить его появление по клику правой кнопкой мыши. Для этого экземпляр меню подвязывается не через опцию menu к родительскому виджету, а к меню применяется метод post() , аргументами которого являются координаты того места, где должно появляться меню:
Здесь при клике на холсте правой кнопкой мыши в этой точке всплывает меню. При выборе пункта меню рисуется соответствующая фигура в этом же месте.