如何使用PyObjC从Python调用带有UniqueName的NSPasteboard

时间:2019-04-12 18:26:20

标签: pyobjc

我正在尝试通过PyObjC使用NSPasteboard类级别的函数withUniqueName通过Python创建新的粘贴板,但是出现错误“ AttributeError:NoAttribute withUniqueName”。

这是我第一次使用PyObjC。我确实读过PyObjC intro,但我很容易将其称为错误。

此代码产生错误:

from AppKit import *
pb = NSPasteboard.withUniqueName()

根据介绍中对选择器的讨论,我也尝试过:

from AppKit import *
pb = NSPasteboard.withUniqueName_()

但这也给出了AttributeError。

此代码(摘自http://www.macdrifter.com/2011/12/python-and-the-mac-clipboard.html起作用:

from AppKit import *
pb = NSPasteboard.generalPasteboard()

NSPasteboard docs中,我看到withUniqueName是一个类函数,而general是一个类变量,因此我尝试以相同的方式调用withUniqueName可能是错误的。

在尝试确定我只是在错误地调用UniqueName还是PyObjC没有实现它时,我做了dir(NSPasteboard)。 withUniqueName不在列表中,但“ general”和“ generalPasteboard”都不在列表中。即使浏览安装的模块,我也找不到“ general”或“ generalPasteboard”,而且我知道后者有效,因此这使我的发现尝试感到沮丧。同样,我不明白为什么当Apple文档中的名称只是通用名称时,Python代码为什么需要将变量称为generalPasteboard。

我正在使用从PyPI安装的PyObjC 5.2和Sierra 10.12.6上的Python 3.7.0。

PyObjC 5.2是否支持带有UniqueName的NSPasteboard?如果是这样,正确的调用方式是什么?如果没有,我将如何检查模块/类以了解这一点?

1 个答案:

答案 0 :(得分:0)

withUniqueName的名称是此方法的Swift名称,Objective-C选择器是+[NSPasteboard pasteboardWithUniqueName]。这意味着可以这样称呼它:

pboard = NSPasteboard.pasteboardWithUniqueName()
相关问题