2013-06-17 2 views
0

Я программно создаю меню в PyObjC с этой иерархией.Как правильно построить главное меню в PyObjC?

NSMenu (setMainMenu on NSApplication) 
- NSMenuItem(1) 
    - NSMenu: "App Name" 
    - NSMenuItem(1) 
    - NSMenuItem(2) 
    ... 
- NSMenuItem(2) 
    - NSMenu: "File" 
    - NSMenuItem(1) 
    - NSMenuItem(2) 
    ... 
- NSMenuItem(3) 
    - NSMenu: "Edit" 
    - NSMenuItem(1) 
    - NSMenuItem(2) 
    ... 
... 

Однако все приложение показывает PyObjC является единым меню «Python», который содержит элементы, которые должны быть под «App Name».

Как мне заставить себя вести себя?

+0

Вы действительно хотите создать подходящую оболочку приложения и использовать как можно больше Cocoa, включая основной файл xib. – bbum

+0

@bbum Да, я знаю. Я просто не могу стоять Objective-C и IB и пытаюсь найти альтернативы. –

+0

Если вы хотите написать подходящее приложение для Mac, вам нужно будет полностью понять системные API, и для этого потребуется понимание Objective-C. За последние годы (десятилетия?) Существует множество статей о написании приложений Cocoa/OpenStep на Python, кстати. Google знает все. – bbum

ответ

1

Меню «Python», скорее всего, меню MainMenu.nib в приложении Python.app, скрытое в Python.framework. Это приложение позволяет использовать GUI API в сценарии командной строки, не прибегая к частным API.

Лучший способ получить правильное поведение - создать пакет приложений, либо через py2app, либо вручную.

+0

Вы совершенно правы! И значок док-станции, который я искал в PyObjC, на самом деле происходит из /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app. Из первой части серии сообщений в блогах, которую вы связали, похоже, что невозможно создать меню с нуля, потому что оно создается через некоторые частные API (это совершенно безумно!). –

+0

Я не знаю, не можете ли вы создать меню с нуля, страница, которую я нашел, использует частный API, но я считаю маловероятным, что это можно сделать только с частными API. Я надеюсь, что у вас будет время, чтобы поиграть с созданием графического интерфейса полностью из кода в ближайшем будущем (что должно быть намного более выполнимым с автоматической компоновкой, чем более старая система расположений) –

+0

Не могу дождаться вашего сообщения в блоге! ;) Между тем, я сдаюсь и буду просто использовать наконечник. –