Как изменить OSX menubar в wxPython без какого-либо открытого окна? - PullRequest
4 голосов
/ 29 мая 2010

Я пишу приложение wxPython, которое остается открытым после закрытия всех его окон - так что вы по-прежнему можете перетаскивать новые файлы на значок панели OSX (я делаю это с myApp.SetExitOnFrameDelete(False)).

К сожалению, если я закрою все окна, меню OSX будет содержать только меню «Справка». Я хотел бы добавить хотя бы пункт меню Файл / Открыть или просто сохранить меню в главном окне. Возможно ли это как-то в wxPython?

На самом деле, я был бы доволен взломом не-wxPython (например, установив меню в pyobjc, но запустив остальную часть GUI в wxPython). В любом случае, разработка wxPython в OSX - это такой взлом;)

ОБНОВЛЕНИЕ : мне удалось решить эту проблему, используя совет от Линдси Фергюсон. Вот что я сделал:

  • При запуске я создаю окно, которое я показываю и сразу скрываю. Я установил его положение на (-10000,-10000), чтобы оно не мерцало на экране (аааа, какой грязный хак!)
  • Я создаю пустой обработчик событий EVT_CLOSE в этом окне, чтобы его нельзя было закрыть.
  • Кажется, что уничтожение окна сбрасывает меню OSX, но скрытие не делает ... Поэтому, когда последнее окно закрыто, мне нужно снова показать и скрыть это окно (необходимо скрытие, чтобы пользователь не мог переключиться на это окно с помощью меню Window или Cmd-`)

Да, это действительно ужасно ... Я буду очень признателен, если кто-то придумает более красивое решение.

ОБНОВЛЕНИЕ 2: На самом деле это можно решить намного проще: если мы не закроем последнее окно, только скроем его. И убедитесь, что он больше не реагирует на события меню.

1 Ответ

1 голос
/ 02 июня 2010

Можете ли вы создать скрытое окно, которое где-нибудь за кадром? Это хак, но я помню, что мне приходилось делать много хаков, чтобы заставить мое приложение на основе wxPython корректно работать в Mac OS X.

Примечание: Вам придется отключить кнопку закрытия и настроить это скрытое окно, чтобы оно не отображалось в меню «Окно».

В сторону: Рассматривали ли вы выделение части графического интерфейса приложения Python и использование PyObjC в Mac OS X? Вы получите больше нативного поведения ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...