问题标签 [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 回答
2068 浏览

cocoa - NSMenuItem 中的动画进度条

NSMenuItem我想在自定义视图中放置一个动画进度条。这在 Apple 的MenuItemView示例中得到了演示,但它没有动画(至少在 10.5 中没有,并且示例显然来自 10.4)。

我尝试设置一个调用 的计时器,按文档所说的那样setNeedsDisplay:YES安排。NSEventTrackingRunLoopMode这有效,但仅适用于确定的进度条,如果我更改值,并且仅在第一次打开菜单时。第二次和连续两次,条形图重绘两次,然后保持冻结状态。对于不确定的进度条,理发杆条纹从不动画。


编辑:代码片段。我刚刚添加了itemChanged调用,似乎没有任何效果。更新纯文本项目工作正常。

0 投票
2 回答
1439 浏览

python - 使用 pyobjc 将元数据写入 pdf

我正在尝试使用以下 python 代码将元数据写入 pdf 文件:

这似乎工作正常(控制台没有错误),但是当我检查文件的元数据时,如下所示:

原始文件具有以下元数据:

所以问题是,它不是附加元数据,而是清除以前的元数据结构。我需要做什么才能使其正常工作?我的目标是附加参考管理系统可以导入的元数据。

0 投票
1 回答
787 浏览

python - 从 python 访问 API objc 常量和枚举

我正在使用 pyobjc 将一些需要的 OSX 功能添加到一些随机 python 软件中。我需要从 python-land 访问 API 定义的 objc-land 常量。

此类常量的一个示例位于NSRunningApplication页面的最下方,特别是 NSApplicationActivationPolicy 的三个可能值。

就上下文而言,当前的任务是列出当前正在运行的、面向用户的应用程序。为此,以下代码可以正常工作:

但是,当原始库中随时可用时,我宁愿不检查零(以使其更具可读性),也不要在我自己的代码中将虚拟 NSApplicationActivationPolicyRegular 值硬编码为零。

如何通过 pyobjc 从 python 访问此类 objc 常量?

0 投票
1 回答
479 浏览

python - 如何使用 pyobjc 在主窗口中加载视图?

我有一个窗口,其中包含一个带有 7 个按钮的工具栏,该窗口有一个空子视图,当按下预加载的光衰时,它们应该从任何按钮放置选定的视图。我的代码示例https://github.com/jyr/opentumblr-cocoa/blob/master/DashboardController.py

0 投票
4 回答
447 浏览

objective-c - PyObjC / Ruby 桥。值得吗?

多年前,我想编写 Mac 软件并拥有大量使用 Java WebObjects 的经验,我尝试了 java 桥接器,但决定硬着头皮学习 Objective-C(幸运的是,因为我不想让我的软件与桥接器一起被弃用)。后来我和 RubyCocoa 混在一起。我学习了 Ruby(发现它确实很有趣),但发现桥离成熟或稳定还很远,最后我结束了将代码移植回 Objective-C。

多年过去了,我想知道是否值得花一些时间使用 MacRuby,甚至学习 Python 以使用 PyObjC。尽管我很喜欢 Objective-C,但我记得当 Ruby 桥没有崩溃时,它的工作效率更高。我只是讨厌花时间再次使用崩溃的软件。

0 投票
3 回答
3639 浏览

objective-c - 如何在 Mac OS X 中监听应用程序启动事件?

我写了一个AppleScript来挂载图像,我希望它在启动SparseBundle时准确执行。Time Machine

现在,我会定期检查 Time Machine 是否使用AppleScriptusingon idle语句运行:

这不是一种稳健的方式。在我看来,为事件添加事件触发器Application Launch将是一种更好的方法。

能否请你帮忙?

一个Objective-CPython示例代码(我更喜欢Python)非常受欢迎。

0 投票
2 回答
1303 浏览

cocoa - PyObjC 并返回“输出”参数(即 NSError **)

我正在实现一个 ObjC 协议作为 PyObjC 类的混合。

该协议定义了一个“out”参数。

我找不到任何关于实现定义它的 ObjC 协议的 Python 类如何表现的好的文档。

我找到了这个邮件列表线程,但其中的建议不起作用。他们说要返回一个 Python 列表,其中方法的返回值作为第一项,out 参数作为第二项。

<type 'exceptions.ValueError'>: depythonifying 'char', got 'tuple'我已经尝试过了,我得到的只是从 ObjC ( )调用时出现的异常。

似乎 PyObjC 在 depythonifying 方法参数中严格遵守 ObjC 协议,这很好,但它并不能帮助我尝试修改 out 参数。

这是 ObjC 协议:

这是实现此协议的 Python 类:

问题:如何在 Python 中返回 ObjC 输出参数?

0 投票
1 回答
876 浏览

objective-c - PyObjC 教程

我想知道除了项目本身的主页外,是否有任何学习PyObjC的教程网站。我热衷于能够使用 python 开发本机代码并提高生产力,而无需学习如何使用其他一些更传统的编译语言进行编程。任何我能得到截屏视频或好的初学者 tuts 的地方都会很棒。

0 投票
1 回答
1134 浏览

xcode - Xcode 如何选择运行哪个 Python?

使用 Xcode 的 Python 模板,我有一个简单的项目在一台机器上运行,但由于不同的原因在另外两台机器上失败。我解决的失败是即使 main.m 有:

从 main.py 看到的实际运行的 Python:

是不同的。问题是这个其他 Python 没有安装 objc。那么问题来了:除了清理我的机器,我怎么能指示 Xcode 使用系统 Python 呢?

编辑:

这是一个看似微不足道的问题,但事实并非如此。之所以如此,是因为当我将 Mac OS X 10.5 指定为 Base SDK 时,Xcode 会链接到那个 Python.framework,正如我可以通过双击 Xcode 项目的 Linked Frameworks 中的图标看到的那样。

Python.framework 中的每个版本在其 Info.plist 中都有一个键/值对:CFBundleExecutableName/Python。幸运的是(为了取证)这个版本 2.5 框架中的 Python 发布了 2.6.1!然而,通过打印 sys.version(来自 main.py)或窥探加载程序(通过执行 export DYLD_PRINT_LIBRARIES=1),我可以看到 PyObjC 应用程序实际上启动了 Python 2.5.4。

上面带有 Py_SetProgramName.. 的行是无关紧要的——它可以被注释掉并且一切正常。

所以看起来是 Python.framework 控制启动哪个 Python,它没有按照我预期的方式执行此操作,并且它可能通过不透明的初始化例程进行控制,因为它由 Apple 控制。似乎“控制”情况的最佳方法是更改​​ Base SDK。

0 投票
1 回答
4808 浏览

python - 如何在 OSX 上恢复我的默认 python 安装?

我正在尝试在运行 OSX 10.6 的 Mac 上安装 pyobjc(使用 pyobjc-1.2-python2.3-macosx10.2.dmg),我收到以下错误消息:

替代文字

要使用 Python 2.3,我尝试重新编辑我的 .bash_profile 并注释掉除此行之外的所有内容:

我之前确实包括了这个:

但目前将其排除在外。我知道当我python在终端输入时它给了我Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29),所以它显然没有使用 2.3。

我能做些什么来解决这个问题?