标签: pyobjc

如何使用Cocoa和Python(PyObjC)创建状态栏项?

我在XCode中创建了一个全新的项目,并在我的AppDelegate.py文件中包含以下内容:

from Foundation import *
from AppKit import *

class MyApplicationAppDelegate(NSObject):
    def applicationDidFinishLaunching_(self, sender):
        NSLog("Application did finish launching.")

        statusItem = NSStatusBar.systemStatusBar().statusItemWithLength_(NSVariableStatusItemLength)
        statusItem.setTitle_(u"12%")
        statusItem.setHighlightMode_(TRUE)
        statusItem.setEnabled_(TRUE)
Run Code Online (Sandbox Code Playgroud)

但是,当我启动应用程序时,不显示任何状态栏项.main.py和main.m中的所有其他代码都是默认的.

python cocoa pyobjc

8
推荐指数
2
解决办法
2325
查看次数

PyObjc vs RubyCocoa for Mac开发:哪个更成熟?

我一直想要玩Ruby或Python,同时我一直想做一些Cocoa编程.

所以我认为实现这两个目标的最好方法是使用Ruby或Python到Objective-C桥(PyObjc或RubyCocoa)开发一些东西.

我知道理想情况下,为了获得最好的学习经历,我会独立学习每个技术,但我没有时间.:)

所以我的问题是哪个是更成熟的平台,PyObc或RubyCocoa,我正在寻找的主要内容:

  1. API的文档
  2. 教程
  3. 工具
  4. 支持性社区
  5. 可可API的完整性通过桥梁可用

关于第5点,我不希望整个Cocoa API可以通过任何一个桥接器获得,但我需要有足够的Cocoa API来开发一个正常运行的应用程序.

ruby python cocoa pyobjc ruby-cocoa

8
推荐指数
2
解决办法
2492
查看次数

从标准Cocoa应用程序运行python代码

我有一个作为Cocoa单文档应用程序构建的XCode项目(它不是Python-Cocoa应用程序,这不是我想要的).

我发现的所有文档都假设我想创建一个Cocoa应用程序,其代码用Python编写,但事实并非如此 - 我想要一个标准的Cocoa应用程序来调用Python类中的方法.

我可以使用PyObjC从文件运行python代码而不用main.py文件替换Cocoa标准main.c吗?

稍后编辑:我知道Python.framework,但据我所知,我只能通过环境向PyRun_SimpleFile发送参数 - 我想直接使用桥接器与python代码交换数据.

python macos cocoa pyobjc

8
推荐指数
1
解决办法
2232
查看次数

是否可以从ObjC调用Python模块?

使用PyObjC,是否可以导入Python模块,调用函数并获得结果(例如)NSString?

例如,执行以下Python代码的等效操作:

import mymodule
result = mymodule.mymethod()
Run Code Online (Sandbox Code Playgroud)

..in伪ObjC:

PyModule *mypymod = [PyImport module:@"mymodule"];
NSString *result = [[mypymod getattr:"mymethod"] call:@"mymethod"];
Run Code Online (Sandbox Code Playgroud)

python pyobjc objective-c

8
推荐指数
1
解决办法
3238
查看次数

使用virutalenv时,py2app没有将Python.framework复制到新的应用程序

环境:MacOS X 10.7.2,系统安装python 2.7.1,virtualenv 1.7.2,pyobjc 2.3,py2app 0.6.4+

我有一个新创建的virtualenv安装了pyobc 2.3和py2app.当我运行python setup.py py2app来创建一个应用程序时(例如在py2app/examples/simple中),一切似乎都在编译,它确实产生了一个双击应用程序,但点击该应用程序后,我收到以下错误:

A Python runtime not could be located.  You may need to install a framework build of Python, or edit the PyRuntimeLocations array in this application's Info.plist file.
Run Code Online (Sandbox Code Playgroud)

但是,如果我在Lion的标准安装中遵循相同的过程.该应用程序功能良好,符合预期.

关于如何让virtualenv和py2app相互配合的任何建议?

谢谢!

python pyobjc virtualenv py2app osx-lion

8
推荐指数
1
解决办法
7195
查看次数

使用PyObjC与Mountain Lion的通知中心合作

我正在尝试从我的python脚本向Mountain Lion发送通知,并对通知的点击做出反应.现在可以完美地发送通知.但是,我无法让Lion在点击后回拨我的剧本.

这就是我的工作.我实现了一个Notification类.该类实例的唯一目的是通过调用提供通知notify().在同一方法中,我将对象设置为app的委托.

import Foundation
import objc
import AppKit

class MountainLionNotification(Foundation.NSObject, Notification):

    def notify(self, title, subtitle, text, url):
        NSUserNotification = objc.lookUpClass('NSUserNotification')
        NSUserNotificationCenter = objc.lookUpClass('NSUserNotificationCenter')
        notification = NSUserNotification.alloc().init()
        notification.setTitle_(str(title))
        notification.setSubtitle_(str(subtitle))
        notification.setInformativeText_(str(text))
        notification.setSoundName_("NSUserNotificationDefaultSoundName")
        notification.setUserInfo_({"action":"open_url", "value":url})
        AppKit.NSApplication.sharedApplication().setDelegate_(self)
        NSUserNotificationCenter.defaultUserNotificationCenter().scheduleNotification_(notification)

    def applicationDidFinishLaunching_(self, sender):
        userInfo = sender.userInfo()
        if userInfo["action"] == "open_url":
            import subprocess
            subprocess.Popen(['open', userInfo["value"]])
Run Code Online (Sandbox Code Playgroud)

现在我希望applicationDidFinishLaunching_()在点击通知时被调用.不幸的是,从未发生过 我究竟做错了什么?

python pyobjc osx-mountain-lion nsusernotification

8
推荐指数
1
解决办法
3889
查看次数

将python嵌入到用Objective-C/Swift/C/C++编写的iOS(iphone)应用程序中(无论我在Xcode中编译并桥接到iOS的语言)

我不打算将项目放在App Store上

  • 简短问题 - 是否有任何最新的PyObjC教程,用于将python脚本嵌入到用Objective-C和/或swift编写的iOS应用程序中?如果没有,是否有任何最新的方法来实现相同的目标?

  • 背景:我想在objective-c ios应用程序中运行一堆python脚本.我尝试了几件事:

    1. 我已经尝试使用python.framework,但我得到了"无法构建Python模块"错误.在谷歌搜索帮助后,我意识到python.framework在iOS上不起作用 - 在iOS应用程序中运行python脚本

    2. PyObjC - 为了实验,我设法让生成的*.plugin在OS X上运行.我按照本教程 - https://pythonhosted.org/pyobjc/tutorials/embedded.html 在iOS上使用相同的方法,它无法编译

python xcode pyobjc objective-c ios

8
推荐指数
1
解决办法
9147
查看次数

处理OSX Dock Drag N Drop

我看起来很高,有关如何处理拖放到OSX中的扩展坞的信息.拖放文档(http://developer.apple.com/documentation/Cocoa/Conceptual/DragandDrop/DragandDrop.html#//apple_ref/doc/uid/10000069)我发现所有处理从视图拖动到视图.如果有人能指出我的代码样本,那将是非常好的.

我正在使用PyObjC新娘编写我的应用程序,但Cocoa示例同样受欢迎:-)

cocoa pyobjc

7
推荐指数
1
解决办法
4511
查看次数

查找 Mac OSX 上当前聚焦的应用程序窗口

我正在编写一个桌面使用情况统计应用程序。它运行一个后台守护程序,该守护程序定期唤醒,查找当前焦点的应用程序窗口的名称并将该数据记录在数据库中。

我设法在 xprop 实用程序的帮助下在 Linux 桌面上执行此操作(您可以在此处找到它)。

我怎样才能在 Mac OSX 上做同样的事情?有没有直接/间接的方法可以从 python 脚本中执行此操作?(PyObjC?)

python macos desktop pyobjc

7
推荐指数
1
解决办法
2816
查看次数

有没有使用PyObjC编写的iOS应用程序的例子?

我能找到的唯一参考文献表明理论上可以使用python编写iOS应用程序.有谁知道以这种方式编写的应用程序的任何示例?

python pyobjc ios

7
推荐指数
1
解决办法
3353
查看次数