我正在尝试通过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?如果是这样,正确的调用方式是什么?如果没有,我将如何检查模块/类以了解这一点?
答案 0 :(得分:0)
withUniqueName的名称是此方法的Swift名称,Objective-C选择器是+[NSPasteboard pasteboardWithUniqueName]
。这意味着可以这样称呼它:
pboard = NSPasteboard.pasteboardWithUniqueName()