Добавляем свои команды в контекстное меню без боли

14 Sep, 2024

Это архивный репозиторий и может быть устаревшим.

492
🔱 26
👥 12

Представьте: вы часто выполняете однотипные действия с файлами — конвертируете картинки, запускаете скрипты или копируете пути. Каждый раз открывать терминал или писать скрипты утомительно. А что если добавить нужные действия прямо в контекстное меню? Библиотека context_menu делает это буквально в несколько строк кода на Python.

Что умеет context_menu

Эта библиотека позволяет:

  • Добавлять свои пункты в контекстное меню для файлов, папок и рабочего стола
  • Запускать Python-функции или shell-команды по клику
  • Создавать многоуровневые (вложенные) меню
  • Работать на Windows 7-11 и Linux (через Nautilus)

Пример работы context_menu

Как это работает

Установка проще некуда:

pip install context_menu

А вот пример добавления простой команды, которая выводит "Hello" при клике на файл:

Реклама
from context_menu import menus

fc = menus.FastCommand('Приветствие', type='FILES', command='echo Hello')
fc.compile()

После запуска этого скрипта в контекстном меню файлов появится новый пункт "Приветствие".

Более сложные сценарии

Библиотека поддерживает вызов Python-функций с передачей параметров. Например:

def process_files(filenames, params):
    print(f"Обрабатываю {len(filenames)} файлов")
    for file in filenames:
        print(file)

if __name__ == '__main__':
    from context_menu import menus
    
    cm = menus.ContextMenu('Меню обработки', type='FILES')
    cm.add_items([
        menus.ContextCommand('Показать информацию', python=process_files)
    ])
    cm.compile()

Можно создавать вложенные меню и даже передавать параметры в команды:

cm = menus.ContextMenu('Главное меню', type='FILES')
submenu = menus.ContextMenu('Подменю')

submenu.add_items([
    menus.ContextCommand('Команда 1', command='echo 1'),
    menus.ContextCommand('Команда 2', command='echo 2')
])

cm.add_items([submenu])
cm.compile()

Полезные фишки

  1. Фильтрация по типам файлов — можно сделать, чтобы команда появлялась только для .txt файлов
  2. Специальные переменные — например, можно получить путь к выбранному файлу через ? в команде
  3. Удаление меню — если команда больше не нужна, её легко убрать

Где это пригодится

  • Автоматизация рутинных задач с файлами
  • Быстрый доступ к часто используемым скриптам
  • Создание собственных инструментов для работы с файлами
  • Упрощение рабочих процессов для менее технических пользователей

context_menu — это простой и элегантный способ расширить стандартное контекстное меню под свои нужды. Библиотека особенно полезна:

  • Разработчикам, которые хотят ускорить свой workflow
  • Администраторам, создающим удобные инструменты для коллег
  • Всем, кто работает с большим количеством файлов

Попробуйте — возможно, эта библиотека станет вашим новым любимым инструментом!

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

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