Как сделать меню в python

Добавил пользователь Евгений Кузнецов
Обновлено: 10.09.2024

Программа на основе меню – это программа, которая получает ввод от пользователя, показывая список опций, известный как меню, из которого пользователь выбирает свой вариант. Системы, обрабатывающие программы, управляемые с помощью меню, являются обычными, начиная от стиральных машин, управляемых микропроцессорами, и заканчивая банкоматами.

В случае с банкоматом пользователь нажимает отдельные клавиши, чтобы указать тип транзакции (если пользователю нужна квитанция с наличными или требуется выписка со счета). При многих пользователь нажимает одну клавишу, чтобы указать сумму наличных денег для снятия.

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

В данном руководстве мы познакомимся с некоторыми программами, управляемыми с помощью меню, написанными на Python. Эти программы позволят нам понять различные аспекты программ, управляемых с помощью меню, а также различные библиотеки и модули языка программирования Python.

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

Параметры различных форм с помощью функций

В приведенном выше примере мы определили различные функции, печатающие оценочное значение после расчета. Эти функции включают параметры и площади круга, прямоугольника и квадрата соответственно. Затем мы напечатали заголовок программы, в котором говорилось: ДОБРО ПОЖАЛОВАТЬ В ПРОСТУЮ ПРОГРАММУ ИЗМЕРЕНИЯ.

Ниже мы использовали бесконечный цикл while для печати главного меню, содержащего различные параметры. Затем программа использует операторы if-elif-else, чтобы попросить пользователя ввести целое число, выбрав параметры. Программа также вызовет исключение, если вставленное целое число отсутствует в списке параметров.

Программа с меню для создания простого калькулятора

В следующей программе, управляемой с помощью меню, мы собираемся создать простой калькулятор на Python. Мы будем использовать бесконечный цикл while и функции, как указано выше. Мы разработаем меню, позволяющее пользователю применять функции калькулятора, такими как сложение, вычитание, умножение и деление.

Рассмотрим синтаксис следующей программы:

Программа с меню для создания простого калькулятора

В приведенной выше программе мы использовали почти ту же процедуру, что и в предыдущей программе. Мы определили различные функции, такие как сложение, вычитание, умножение и деление. Затем мы использовали цикл while, чтобы распечатать список меню для пользователей, и операторы if-elif-else, чтобы вернуть ответы, которые нужны пользователю. В результате был успешно создан простой калькулятор, который выполняет некоторые базовые вычисления, такие как сложение, вычитание, умножение и деление.

Создание телефонного справочника

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

  1. Сохранение контактных номеров людей
  2. Поиск контактного номера по имени человека

Реализуем эту идею в следующей программе:

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

Прежде всего, мы создали текстовый файл для хранения контактных данных. Затем мы определили различные функции для добавления, отображения и поиска различных контактов. Мы также создали различные поля контактной информации, такие как имя, фамилия, номер мобильного телефона и адрес электронной почты. В результате программа успешно завершена, и результат ее выполнения можно увидеть выше.

Заключение

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

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

Ну, зациклите код из вопроса, а из input принимайте значение в переменную, в которой и проверяйте введенное значение

1 ответ 1


Всё ещё ищете ответ? Посмотрите другие вопросы с метками python menu или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2022 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2022.1.28.41306


Давайте для начала создадим вот такое простое меню. На уровне языка Python это выглядит так:

Запустим программу и видим ожидаемый функционал. И смотрите, если сейчас нажать комбинацию клавиш

И так далее. Вот в этом смысл этого амперсанда.

Конечно, если сейчас выбрать пункт меню, то ничего не произойдет, т.к. мы еще не назначили ему обработчик. Но, прежде чем мы это сделаем, отметим следующее. Для удобства вот эти две строчки:

можно объединить в одну:

Результат будет абсолютно таким же. В дальнейшем мы будем создавать пункты именно так, если не понадобится первый способ.

Теперь свяжем данный пункт с обработчиком. Например, пусть при его выборе вызывается метод:

Обратите внимание, у этого метода следует прописывать обязательный параметр event, который будет ссылаться на объект события. Через него можно получать дополнительную информацию о том, что произошло.

Само связывание делается с помощью специального метода Bind, который наследуется почти всеми классами wxPython. Его синтаксис следующий:

  • event – тип события, связанный с определенным интерфейсным объектом;
  • handler – ссылка на функцию-обработчик;
  • source – источник, генерирующий событие.

В нашем случае этот метод можно записать так:

Мы здесь указали тип события – EVT_MENU, далее, ссылка на метод onQuit, и, наконец, источник – наш пункт меню item. Все, теперь при запуске программы сработает метод onQuit и окно будет закрыто.

Добавим теперь нашему пункту дополнительный функционал. Во-первых, мы хотим, чтобы при комбинации клавиш

этот пункт автоматически вызывался и выполнялся связанный с ним обработчик. Назначить горячие клавиши очень просто, указав их через символ табуляции:

Далее, добавим нашему пункту изображение иконки. Вначале определим константу

которая будет связана с ним. И создадим пункт, используя класс MenuItem:

В данном случае это необходимо, т.к. перед его добавление во вкладку мы присвоим ему иконку:

Запускаем программу и видим такой эффект:


Разумеется, картинка exit16.jpg должна располагаться в том же каталоге, что и запускаемый файл с программой на питоне. Размеры картинки должны соответствовать нашему пункту. Если ее взять больше:

то это может выглядеть не так эстетично.


Кстати, используя нашу собственную константу APP_EXIT в качестве id пункта, в дальнейшем, мы можем связывать через нее обработчик в методе Bind:

Такой подход более предпочтителен, чем использование ссылок, т.к. их легко изменить или многократно использовать для разных пунктов. А вот id остается неизменным.

Подменю и сепараторы

Давайте расширим нашу вкладку, добавим на нее еще несколько стандартных пунктов, например, такие:


И смотрите, нам бы здесь хотелось визуально отделить эти пункты от последнего. Как раз это можно сделать с помощью специального пункта, который называется separator. Он добавляется специальным методом:


Теперь наша вкладка выглядит привычнее.

Следующим шагом добавим подменю. Создадим еще одну вкладку:

пропишем туда вот такие пункты:

и добавим на вкладку fileMenu:

Запускаем программу и видим такой результат:


Типы пунктов меню

  • ITEM_NORMAL – обычный текст;
  • ITEM_SEPARATOR – разделитель (сепаратор);
  • ITEM_CHECK – пункт с флажком;
  • ITEM_RADIO – пункт с возможностью перебора.

С первыми двумя мы уже познакомились. Для демонстрации двух других создадим еще одну вкладку:

Добавим туда следующие строчки:

Смотрите, здесь последним именованным параметром идет kind, определяющий тип пункта меню. У первого стоит ITEM_CHECK, а у двух других - ITEM_RADIO.

Добавим эту вкладку на панель меню:

Запустим программу и увидим вот такой эффект:


Смотрите, первую строчку можно отмечать флажком, а последние две только перебирать: либо RGB, либо sRGB.

Давайте теперь посмотрим как все это можно отследить в обработчиках этих событий. Пропишем в начале вот такие константы:

Укажем их при создании строчек меню:

И, далее, повесим обработчики:

Объявим два метода:

Видео по теме


















© 2022 Частичное или полное копирование информации с данного сайта для распространения на других ресурсах, в том числе и бумажных, строго запрещено. Все тексты и изображения являются собственностью сайта

OptionMenu немного похоже на виджет Combobox, но уже включён в сам Tkinter, поэтому нет необходимости импортировать ttk, как в случае с Combobox .

Tkinter OptionMenu Пример

app является родителем созданного меню опций,

variable - это исходная текстовая переменная, имеющая тип tk.StringVar .

*OptionList - это другие опции меню. * используется для распаковки контейнера, так как здесь используется тип list .

Привязать команду к OptionMenu When Value Changes

OptionMenu не смог связать команду при выборе нового значения из списка опций. Нельзя было просто связать с ней функцию обратного вызова, как виджет кнопки.

Вам нужно использовать метод трассировки, чтобы прикрепить обратные вызовы Обсервера к переменной OptionMenu . Каждый раз, когда переменная изменяется, она запускает функции обратного вызова.

Пример обратного вызова OptionMenu

Тогда variable.trace("w", callback) означает, что она вызовет функцию callback , когда variable будет записана или выбрана пользователем.


report this ad

Читайте также: