Spyder: открытие файлов .py с активацией окна

Все, кто увлекается Python, наверно, слышали об редакторе Spyder, который входит практически во все сборки пакетов python. Я использую WinPython, и Spyder лежит в корне папки в виде файла Spyder.exe. Какое же мое было удивление, когда при открытом редакторе Spyder я пытаюсь через контекстное меню Edit with Spyder открыть файл, но ничего не происходит. То есть Spyder не активирует окно. При этом файл открывается в самом редакторе, но сам Spyder остается неактивным или свернутым. В какой-то момент такая дикость стала сильно напрягать , поэтому написал маленький скрипт для решения этой проблемы.

spyder_main_window_screenshot
Главное окно Spyder

Предыстория

Сначала я, конечно, долго смирялся c такой странной фичей. Если, например, я открою файл в блокноте, то он сразу появится поверх всех окон и станет активным. Первое, что я решил — написать следует с помощью скрипта AutoHotKey. Будущий скрипт очень простой: он принимает путь до файла, запускает Spyder с нужным файлом и делает его главное окно активным на весь экран. Выбор Autohotkey был очевиден, потому что в нем очень легко можно управлять окнами. Можно искать по заголовку окна, делать его активным или максимизировать окно и т.д.

Так как на питоне уже были готовые куски запуска программ, оставалось только найти какой-то питоновский пакет для поиска и управления окнами Windows. Поэтому решил попробовать найти что-нибудь на python. Вдруг будет что-то наподобие AutoHotKey, такое же простое в использовании. Буквально с первой ссылки в поисковике нашел такой пакет: pygetwindow. Посмотрел пример использования и сразу понял, это прям то, что нужно. Проще просто некуда.

Установка стандартная через pip: pip install pygetwindow

Или через python.exe путь_до_python\python.exe -m pip install pygetwindow

Приведу сразу пример по поиску окна Spyder, он совсем несложный

В примере выше во всех заголовках окон ищется подстрока ‘Spyder’. После того, как нашлось, по этому заголовку находится окно и делается активным на весь экран.

Остальная часть скрипта банальный запуск процесса Spyder.exe с аргументом в виде пути до нужного файла. Запуск делаю через стандартный subprocess (скрипт можно скачать ниже)

Изменение контекстного меню

При регистрации WinPython в системе Windows прописываются в контекстные меню для файлов с расширением .py следующие пункты: Edit with IDLE, Edit with Spyder

windows_contex_menu_on_py_files

Нужно вместо стандартного запуска Spyder добавить в контекстное меню запуск скрипта. Для того, чтобы отредактировать эти меню и добавить свое, нужно открыть редактор реестра Windows. Для запуска используем быстрые клавиши WIN+R и пишем в появившемся окне regedit (видео в помощь)

Далее идем по папкам слева в панели HKEY_CURRENT_USER\SOFTWARE\Classes\Python.File\shell. Заходим внутрь раздела Edit With Spyder, ищем подраздел command и в нем меняем путь

regedit_change_command_Spyder

на новый путь

Только не забывайте ставить свои настоящие пути до питона и до скрипта.

Я лично еще удалил пункт меню с Edit with IDLE путем удаления соответствующей папки в том же разделе, где правил пути выше.

Также я вставил дополнительно на панель totalcmd иконку на запуск, чтобы удобно открывать в разных средах файлы

totalcmd_bar_command
В параметрах в конце пути стоит %P%S

Скачать

скрипт spyder_open_file_and_activate.py (обязательно поменяйте путь до Spyder.exe)

Оцените статью
В коробке инженера
Добавить комментарий

Нажимая на кнопку "Добавить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности