Я пишу приложение wxPython, которое остается открытым после закрытия всех его окон - так что вы по-прежнему можете перетаскивать новые файлы на значок панели OSX (я делаю это с myApp.SetExitOnFrameDelete(False)
).
К сожалению, если я закрою все окна, меню OSX будет содержать только меню «Справка». Я хотел бы добавить хотя бы пункт меню Файл / Открыть или просто сохранить меню в главном окне. Возможно ли это как-то в wxPython?
На самом деле, я был бы доволен взломом не-wxPython (например, установив меню в pyobjc, но запустив остальную часть GUI в wxPython). В любом случае, разработка wxPython в OSX - это такой взлом;)
ОБНОВЛЕНИЕ : мне удалось решить эту проблему, используя совет от Линдси Фергюсон. Вот что я сделал:
- При запуске я создаю окно, которое я показываю и сразу скрываю. Я установил его положение на
(-10000,-10000)
, чтобы оно не мерцало на экране (аааа, какой грязный хак!)
- Я создаю пустой обработчик событий EVT_CLOSE в этом окне, чтобы его нельзя было закрыть.
- Кажется, что уничтожение окна сбрасывает меню OSX, но скрытие не делает ... Поэтому, когда последнее окно закрыто, мне нужно снова показать и скрыть это окно (необходимо скрытие, чтобы пользователь не мог переключиться на это окно с помощью меню Window или Cmd-`)
Да, это действительно ужасно ... Я буду очень признателен, если кто-то придумает более красивое решение.
ОБНОВЛЕНИЕ 2: На самом деле это можно решить намного проще: если мы не закроем последнее окно, только скроем его. И убедитесь, что он больше не реагирует на события меню.