首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有Xcode的PyObjC教程

没有Xcode的PyObjC教程
EN

Stack Overflow用户
提问于 2011-02-14 15:39:10
回答 2查看 3.8K关注 0票数 6

我正在编写一个小型的跨平台wxPython应用程序,但是在每个平台上我都需要使用一些特定于平台的API。在Mac上,它可以使用PyObjC完成。

我正在寻找关于如何使用PyObjC的教程。但是,到目前为止,我发现的只是Xcode的教程。我希望我的应用程序能够在mac/win/lin上运行,不需要改变,我不想用Xcode开发它。有办法吗?

更具体地说,我需要访问Mac中的一些笔-tablet事件,我想为此使用(我没有看到任何其他方法)。

EN

回答 2

Stack Overflow用户

发布于 2011-02-22 00:13:15

您可以导入基金会和AppKit模块,然后导入子类NSApplication。但是,如果您的pyobjc代码不是代码的入口点,这可能不是您要寻找的东西。能给出更多关于你想用pyobjc做什么的细节吗?

下面是一个使用pyobjc制作简单状态栏应用程序的快速示例,而无需使用xcode:

代码语言:javascript
复制
import objc
from Foundation import *
from AppKit import *
from PyObjCTools import AppHelper

class MyApp(NSApplication):

    def finishLaunching(self):
        # Make statusbar item
        statusbar = NSStatusBar.systemStatusBar()
        self.statusitem = statusbar.statusItemWithLength_(NSVariableStatusItemLength)
        self.icon = NSImage.alloc().initByReferencingFile_('icon.png')
        self.icon.setScalesWhenResized_(True)
        self.icon.setSize_((20, 20))
        self.statusitem.setImage_(self.icon)

        #make the menu
        self.menubarMenu = NSMenu.alloc().init()

        self.menuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Click Me', 'clicked:', '')
        self.menubarMenu.addItem_(self.menuItem)

        self.quit = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Quit', 'terminate:', '')
        self.menubarMenu.addItem_(self.quit)

        #add menu to statusitem
        self.statusitem.setMenu_(self.menubarMenu)
        self.statusitem.setToolTip_('My App')

    def clicked_(self, notification):
        NSLog('clicked!')

if __name__ == "__main__":
    app = MyApp.sharedApplication()
    AppHelper.runEventLoop()

然后,您可以使用py2app使其可分发:

代码语言:javascript
复制
from distutils.core import setup
import py2app

NAME = 'myapp'
SCRIPT = 'myapp.py'
VERSION = '0.1'
ID = 'myapp'

plist = dict(
     CFBundleName                = NAME,
     CFBundleShortVersionString  = ' '.join([NAME, VERSION]),
     CFBundleGetInfoString       = NAME,
     CFBundleExecutable          = NAME,
     CFBundleIdentifier          = 'com.yourdn.%s' % ID,
     LSUIElement                 = '1', #makes it not appear in cmd-tab task list etc.
)


app_data = dict(script=SCRIPT, plist=plist)

setup(
   app = [app_data],
   options = {
       'py2app':{
           'resources':[
               ],
           'excludes':[
               ]
           }
       }
)
票数 11
EN

Stack Overflow用户

发布于 2011-02-21 22:13:45

你需要Xcode做什么?如果您需要用于windows/gui (*.nib,*.xib文件),那么您应该搜索“创建*.nib,*xib而没有Xcode”。这只是一个搜索提示,没有令人满意的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4994058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档