Python контекстное меню windows

Контекстное меню и панель инструментов

Продолжим тему меню и рассмотрим создание контекстного меню. Часто оно появляется при правом щелчке мыши в области приложения. Давайте в качестве примера сделаем вот такой простой функционал:

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

Подключить его можно так:

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

В нем мы создадим и отобразим контекстное меню. Вначале оно создается как обычное меню:

Здесь прописаны два обработчика:

Метод Iconize() схлопывает окно, а Maximize() – распахивает. Затем, меню отображается с помощью метода:

Обратите внимание, мы берем текущую позицию курсора с помощью метода GetPosition через класс MouseEvent, на который ссылается параметр event. В будущем вам понадобятся и другие возможности классов Event и все они (методы и свойства) приведены в официальной документации. Например, по этой ссылке

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

Запускаем программу и видим, что все работает как и задумано. Но в этой программе есть один недостаток: мы при правом щелчке мыши каждый раз заново создаем меню. Это не самый рациональный путь: его лучше создать один раз, а затем многократно использовать. И, кроме того, само меню удобнее организовать в виде отдельного класса, производного от базового Menu:

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

И при правом щелчке мыши, вызываем:

Все, теперь наше меню создается единожды и вызывается по мере необходимости.

Панель инструментов

Панель инструментов (toolbar) представляет собой набор элементов управления, которые наиболее часто используются при работе с этим приложением.

Для создания панели toolbar достаточно вызвать метод:

И по умолчанию получим горизонтальное расположение под нашим меню:

Для добавления элемента управления используется метод:

И при работе под ОС Windows обязательно нужно вызвать метод:

для отображения кнопки на toolbar’e. Под ОС Linux это необязательное действие, но так как программы обычно пишутся как кросс-платформенные, то лучше всегда записывать эту строчку.

Теперь, при запуске программы мы увидим следующее:

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

Помимо обычных кнопок в виде иконок на тулбар можно добавлять следующие элементы:

Читайте также:  Live cd linux lvm

Здесь AddCheckTool() создает кнопку типа нажать/отжать, а метод AddRadioTool() набор кнопок-переключателей. Все это выглядит следующим образом:

Также отдельные элементы можно делать активными и неактивными:

Теперь кнопка Redo будет недоступна для использования. Соответственно, вернуть активность можно, указав значение True вторым параметром:

Наконец, саму панель инструментов можно располагать в окне разными способами:

Опять же полный функционал (возможности) использования тулбаров смотрите в документации

В частности по панелям инструментов:

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

Видео по теме

wxPython #1: обзор модулей для GUI и порядок установки wxPython

wxPython #2: общая структура интерфейса

wxPython #3: создание меню и подменю — MenuBar, Menu, MenuItem, Bind, Append, AppendSeparator

wxPython #4: контекстное меню и панель инструментов (toolbar)

wxPython #5: схемы (layout) размещения виджетов, BoxSizer

wxPython #6: сайзеры — GridSizer, FlexGridSizer, GridBagSizer

wxPython #7: механизм обработки событий — Bind, Unbind

wxPython #8: примеры событий, назначение id виджетам

wxPython #9: стандартные диалоговые окна

wxPython #10: пользовательские диалоговые окна, класс Dialog

wxPython #11: базовые виджеты — StaticText, TextCtrl, Button, ToggleButton, CheckBox и другие

wxPython #12: продвинутая работа с виджетами — ListBox, SplitterWindow, HtmlWindow, Notebook

wxPython #13: графика — контекст устройства, Pen, Brush и градиентная заливка

wxPython #14: графические примитивы, система координат, единицы измерений

wxPython #15: регионы (wx.Region) и операции с ними

wxPython #16: буферизация графических данных — MemoryDC, Blit

wxPython #17: демонстрация программы wxFormBuilder

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

Python IDLE исчез из контекстного меню правой кнопки мыши

мой простой ярлык в меню правой кнопки мыши исчез. Я думаю, это потому, что я использовал Python 2.7, но я установил Python 2.5 без удаления Python2.7, а затем удалил Python 2.5. Я нашел один файл с именем idle.bat и это работает, но это не хороший способ решить эту проблему.

3 ответов

вот файл reg, чтобы добавить команду для редактирования с IDLE для Python.File (.ру) и Python.NoConFile (.pyw) типы файлов. Это для Python 2.7, установленного в C:\Python27 , поэтому подставим пути в pythonw.exe и idle.pyw , которые имеют отношение к вашей установке. Сохраните его на .reg-файл. Затем щелкните правой кнопкой мыши и выберите Merge .

Это сработало для меня:

  1. открываем regedit
  2. перейти к [HKEY_CLASSES_ROOT\Python.Файл\shell\Edit с IDLE\command], если он не существует, создайте его.

скопируйте следующую строку в реестре:

«C:\Python27\pythonw.ехе» «C:\Python27\Lib\idlelib\idle.pyw «- e»%1»

перейти к [HKEY_CLASSES_ROOT\Python.NoConFile\раковины\редактирования команду Idle\], если он не существует, создайте его.

скопируйте ту же строку в реестр:

«C:\Python27\pythonw.ехе» «C:\Python27\Lib\idlelib\idle.pyw «- e»%1»

Примечание: Если ваш путь python отличается (например c:/program файлы/. ) затем измените пути в соответствии с pythonw.exe и ожидания.места pyw файл.

Это также должно работать для чистого ActivePython установить (чтобы дать вам, что классический холостой ход чувствовать!).

У меня был точно такой же сценарий, и мое исправление состояло в том, чтобы повторно запустить установщик для текущей версии python, который у вас есть, и выбрать опцию «Восстановить».

Python обработчик системного меню Windows

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

На сколько я понимаю есть некое событие при нажатии на нужное мне меню, которое вернет 1248. Но как получать это событие ни как не нагуглю. Нужен перехват для любого окна, которое находится в фокусе. Заранее огромное спасибо!

1 ответ 1

Получать сообщения от чужого окна средствами только лишь Python и библиотеки PyWin32 не получится. Самым правильным решением будет создать dll-перехватчик, затем установить его используя WinAPI-функцию SetWindowsHookEx , как это делает, например, утилита Spy++

Можно предложить немного «костыльный» вариант с использованием PyWinAuto + ctypes. «Костыльность» в том, что нужно отслеживать клик мышью, события EVENT_SYSTEM_MENUSTART / EVENT_SYSTEM_MENUEND и положение курсора мыши.

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

Похожие

Подписаться на ленту

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

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

Edit with IDLE (Python GUI) context menu on Windows 7

Under Windows XP I have a context menu entry «edit with IDLE» for Python source files. I tried to make this work under Windows 7 (32 bit) as well by setting the corresponding registry entries under

However without success — the context menu entry does not appear. How do I set a context menu entry for a specific file type in Windows 7?

2 Answers 2

I spent some time trying to figure this out, and finally got it. I’m running Windows 7, but it should be the same for Windows Vista, Windows XP, etc.

  1. Uninstall Python
  2. Open registry ( WIN R , then type regedit and hit ENTER )
  3. CTRL F and type .py
  4. Each .py key you come across, delete it.

Do this until it gives you the message: finished searching the registry. Repeat this process but changing the search for the following querys:

Delete them all

  • Log off from your user account
  • Log back on
  • Re-install Python
  • I installed Python 2.7 on Windows 7 and the context menu was created automatically by the installer. My first suggestion would be to try running the Python installer again to see if the context menu gets created automatically instead of adding it manually.

    The registry entry had the same path as you indicate in your comment, and this was the command:

    There are some minor differences in the command from what you posted, but I am not sure whether those would account for the context entry not appearing.

    Добавление скрипта в контекстное меню файла

    Добавление пункта в контекстное меню файла
    Как сделать так что бы при нажатии на файл правой клавишей в меню был пункт «Открыть с помощью.

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

    Добавление собственных команд в контекстное меню
    Ребята подскажите как добавить собственную команду в контекстное меню рабочего стола,только чтобы.

    Добавление пункта в контекстное меню .csv
    Добрый день! Пытаюсь добавить пункт в контекстное меню для своего скрипта. Работает он с файлами.

    dondublon, эм, я вроде нигде не писал «по средствам».

    Добавлено через 6 секунд
    Либо я слеп.

    Ёханый бабай. Адмииииииииин, исправь этот позор, пожалуйста 🙂

    Добавлено через 3 часа 35 минут
    Итак, прочитать то я прочитал, но я не нашёл, как именно добавить скрипт питона. Более того интересна та часть, где (пишу, как человек, который первый раз сел за компьютер):

    1) У меня есть скрипт питона, который, предположим, меняет название файла.
    2) Я, правой кнопкой нажимаю на файл, имя которого мне надо поменять, затем, в этом меню выбираю название которое я задал в реестре, допустим. «Шишка».
    3) Значит, при нажатии на «Шишку» файл должен изменить имя на то, которое я прописал в скрипте заранее.

    Как заставить питон понимать, что именно к этому файлу (который я выбрал правой кнопкой и вызвал контекстное меню) необходимо применить скрипт?

    Garry Galler, эх, а я так хотел, что бы ТС дошёл до этого сам( чай все подсказки были даны. Вроде даже ТС был близок к решению.

    Alli_Lupin, ТС расшифровывается, как Тупой Cyberforumnik ? (шутка, если что это я про себя!) :)))

    Garry Galler, Спасибо!

    Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

    Добавление пункта в системное контекстное меню
    Проблема такая: при запуске приложения я хочу что б в меню (когда по папке или файлу щелкаешь.

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

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

    Добавление пунктов в контекстное меню Windows
    Подскажите какие функции,библиотеки win api необходимо использовать в данном случае. Заранее.

    Запрет на добавление новых пунктов в контекстное меню
    День добрый! Вопрос простой: как запретить ВСЕМ и ВСЯ добавлять новые пункты в контекстное.

    Добавление пункта в контекстное меню внутри блокнота
    Здравствуйте! Подскажите, пожалуйста, есть ли возможность добавить свой пункт в контекстное меню.

    Читайте также:  Специальные пути для windows
    Оцените статью