问题标签 [pyobjc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
408 浏览

python - 无法在 OS X 10.6.3 Snow Leopard - libiconv.2.dylib 上的 Python 中导入 obj?

在 OS X 10.6.3 雪豹上

- 我需要做什么?

0 投票
1 回答
885 浏览

python - 如何在 SnowLeopard 的非默认 python 安装上安装 pyobjc

我在 SnowLeopard 上安装 pyobjc 时遇到问题。

它带有 python 2.6,但我需要 2.5,所以我已经成功安装了 2.5。之后我安装了xcode。之后我用“easy_install-2.5 pyobjc”安装了pyobjc

但是当我启动我的 python 2.5 并从 cmd 行尝试导入 Foundation 时,它说“没有名为 Foundation 的模块”

我尝试 export PYTHONPATH="/Library/Python/2.5/site-packages/pyobjc_core-2.2-py2.5-macosx-10.6-i386.egg/objc" 在启动 python 解释器之前做,但仍然没有运气(这个 .egg 目录是 pyobjc 安装的唯一目录,站点包中还有几个 egg 文件......在 objc 子目录中有init .py 文件)

当然,从 2.6 开始一切正常。我如何找出问题所在以及我应该怎么做?

当我从 python 2.6 打印 sys.modules 时,我发现导入的 objc 基本上来自相同的安装位置“/Library/Python/2.6/site-packages/pyobjc_core-2.2-py2.6-macosx-10.6-universal.egg /objc/",那么为什么它不适用于 2.5?

0 投票
1 回答
2840 浏览

macos - 在 Mac OS X 10.6.3 下保存 PDF 时应用 Quartz 过滤器

使用 Mac OS X API,我正在尝试保存应用了 Quartz 过滤器的 PDF 文件,就像在预览应用程序中的“另存为”对话框中一样。到目前为止,我已经编写了以下代码(使用 Python 和 pyObjC,但这对我来说并不重要):

-- filter-pdf.py: 开始

-- filter-pdf.py: 结束

不幸的是,没有应用过滤器“蓝色调”,输出 PDF 看起来与输入 PDF 完全相同。

问题:我错过了什么?如何应用过滤器?

好吧,文档并没有保证这种创建和使用“fdict”的方式应该导致应用过滤器。但是我只是重写了(尽我所能)示例代码/Developer/Examples/Quartz/Python/filter-pdf.py,它与旧版本的Mac一起分发(同时,此代码也不起作用):

----- filter-pdf-old.py:开始

----- filter-pdf-old.py: 结束

==================================================== ======================

基于答案的工作代码:

0 投票
1 回答
478 浏览

python - pyobj 访问 iTunes 应用程序

假设我设法在 Applescript 编辑器中为 iTunes 打开字典:

替代文字

如何使用 Python 和 pyobjc 访问“搜索”命令?

我知道我可以使用以下方式获取 iTunes 应用程序:

iTunes = SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes")

但是在我对其进行操作之后dir,我在返回的字典中看不到搜索命令。请帮忙!

0 投票
1 回答
322 浏览

python - 在 Python 中使用 PyObjC 重新解释 CGImageRef

我正在做的事情在标题中总结起来有点复杂,所以请多多包涵。

我正在编写一个 Python 模块,该模块为我的 C++ 库提供了一个接口,该库提供了一些专门的图像处理功能。能够从 Python 以 CGImageRefs 的形式访问图像缓冲区是最方便的,因此可以使用 Quartz 进一步操作它们(使用 PyObjC,效果很好)。

所以我有一个 C++ 函数,它从我自己的图像缓冲区提供 CGImageRef 表示,如下所示:

CGImageRef CreateCGImageRefForImageBuffer(shared_ptr<ImageBuffer> buffer);

我正在使用 Boost::Python 创建我的 Python 桥。导出此函数以便我可以使用 Python 中的 CGImageRef 最简单的方法是什么?

问题: CGImageRef 类型无法直接导出,因为它是指向未定义结构的指针。所以我可以制作一个包装函数,将它包装在 PyCObject 或其他东西中,让它将指针发送到 Python。但是,我如何将这个对象“转换”为 Python 中的 CGImageRef 呢?有没有更好的方法来解决这个问题?

0 投票
1 回答
343 浏览

python - 现有应用程序中的 python 和 objc 桥接

我最近开始用 objc 编程,我在想如何在现有的 objc 应用程序中使用 python 代码。我在这个站点和其他一些线程中找到了一些线程,但它们根本没有帮助我。我想要做的是获取在苹果开发者网站上找到的 SpotlightAPI并使用结果用 python 代码处理它们。到目前为止,我已经完成了以下工作:
1. 从苹果下载了 SpotlightAPI
2. 基于 PyObjc 中的 cocoa-python 应用程序模板创建了一个新项目
3. 将 SpotlightAPI 中的控制器文件添加到 PyObjC
4. 配置了绑定与他们在 SpotlightAPI 中的方式相同
5. 执行程序并成功运行
6. 创建了一个继承自 NSObject 的新 python 类文件(称为 python.py)
7. python 文件有以下代码:


8.我在Controller.m文件的开头插入了这段代码:


9.id *myPython;在Controller.h文件中添加变量声明
10.在controller.m文件中实现sendit方法如下:


它编译并成功运行,但我从 init 函数得到的控制台消息是:Created PythonClass: (null)还有下一个日志的字符串返回是否(null)
有人知道我在做什么错?

0 投票
2 回答
1444 浏览

python - 如何在没有打开任何窗口的情况下更改 wxPython 中的 OSX 菜单栏?

我正在编写一个 wxPython 应用程序,该应用程序在关闭其所有窗口后仍保持打开状态 - 因此您仍然可以将新文件拖放到 OSX 停靠图标上(我使用 来执行此操作myApp.SetExitOnFrameDelete(False))。

不幸的是,如果我关闭所有窗口,OSX 菜单栏将只包含一个“帮助”菜单。我想至少添加一个文件/打开菜单项,或者只保留主窗口的菜单栏。这在 wxPython 中可能吗?

事实上,我也会对非 wxPython hack 感到满意(例如,在 pyobjc 中设置菜单,但在 wxPython 中运行 GUI 的其余部分)。无论如何,OSX 中的 wxPython 开发都是一种 hack ;)

更新:我设法使用 Lyndsey Ferguson 的提示解决了这个问题。这是我所做的:

  • 在启动时,我创建一个窗口,我立即显示和隐藏。我将它的位置设置为(-10000,-10000)它不会在屏幕上闪烁(啊,多么肮脏的黑客!)
  • 我在该窗口中创建了一个空的 EVT_CLOSE 事件处理程序,以使其无法关闭。
  • 似乎销毁一个窗口会重置 OSX 菜单,但隐藏不会......所以当最后一个窗口关闭时,我需要再次显示和隐藏这个窗口(隐藏是必要的,这样用户就无法使用窗口菜单或 Cmd-`)

是的,这真的很丑……如果有人提出更漂亮的解决方案,我将不胜感激。

更新 2:实际上它可以通过更简单的方式解决:如果我们不关闭最后一个窗口,则只隐藏它。并确保它不再响应菜单事件。

0 投票
1 回答
933 浏览

python - py2app、pyObjc 和 macports 编译错误

我目前正在编写一个使用py2app 嵌入cherrypy 和django 的小型python 应用程序。在我尝试将 pyobjc 包含在我的项目中之前,它运行良好,因为我的应用程序需要一个小 GUI(它由顶部菜单栏中的一个小图标 + 一个下拉菜单组成)。

我可以毫无问题地运行我的 python 脚本(我正在使用带有 macports 的 python 2.6),但我无法启动由 py2app 生成的应用程序包。将出现一个对话框,其中包含以下消息:

我做了一个快速的:

但由于某种原因,macports 尝试构建 openssl,每次编译都会失败。似乎问题与 zLib 有关 - 这是日志中出现的内容:

...这是输出file /opt/local/lib/libz.dylib

在我看来没有什么不对。

我有点卡在这里。我什至不明白 openssl 与 pyObjc 有什么关系,但如果我不设法编译它,我似乎哪儿也去不了。Macports 有时真的很糟糕:/

编辑我设法解决了 Macports 问题,但不是 py2app 一个:/

0 投票
2 回答
4545 浏览

python - ImportError:没有名为 Foundation 的模块

大家好,我对python很陌生,所以请耐心等待。

我想使用 PyObjC 的一些组件编写一个简单的脚本。我在 Mac OS 10.5 上运行,所以从我读过的内容来看,它已包含在内。

然而,打开一个简单的 python 提示并输入import Foundation给我错误ImportError: No module named Foundation

作为参考,我的 sys.path 是

'/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/PyObjC',进去是因为我在胡闹,'/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/PyObjC',但他们似乎没有帮助我。2.4 版本似乎存在,但在 2.5 版本中似乎没有具有上述路径的文件夹。

0 投票
1 回答
692 浏览

python - 使用 Click 反馈咆哮 Python 绑定?

我正在尝试使用 Growl Python 绑定(来自 Growl 存储库的 Growl.py v0.7)来编写一个小型应用程序。当前缺少的功能之一是发送到 Python 的点击通知。

我知道在 Objective-C 中,当用户单击通知时,它会向正在运行的应用程序发送触发器。我想对 Python 绑定做类似的事情。当用户单击通知时,我想让 Python 程序在浏览器中打开一个 URL(或以另一种方式处理事件)。

关于我如何完成它的任何想法?

更新:感谢 synthesizerpatel,他提供了一个有前途的解决方案,我相信他的话对 Lion 有效。不幸的是,我开始从 Mac 中淡出,所以我不再做太多的 Mac 编程了。不过,我做了一些调试,因为它仍然无法在 Snow Leopard 上运行,原因如下:

讨论 Growl PyObjC 不适用于 PyObjC 2.2b3

源代码