在 PyObjC 中为 openFile 实现 NSApplication 委托协议
Posted
技术标签:
【中文标题】在 PyObjC 中为 openFile 实现 NSApplication 委托协议【英文标题】:Implementing NSApplication delegate protocol for openFile in PyObjC 【发布时间】:2016-02-12 05:45:07 【问题描述】:我想在 Python (pyobjc) 中执行此操作
-(BOOL) application: (NSApplication*)sharedApplication openFile:(NSString*) fileName
...
我的委托是这样的 Python 类:
class ApplicationDelegate(NSObject):
...
def applicationDidFinishLaunching_(self, notification):
...
def applicationWillTerminate_(self, sender):
...
如何?
【问题讨论】:
实现方法即可。你有什么问题? 我无法将 Objective-C 语法正确翻译成 Python。我不熟悉 Objective-C 约定。任何帮助,将不胜感激。特别是 PyObjC 中方法签名的正确语法。 【参考方案1】:Objective-C 方法名称是“application:openFile:”,包括冒号。 PyObjC translates ObjC names by replacing colons with underscores。所以你需要的方法名是“application_openFile_”:
class ApplicationDelegate (NSObject):
def application_openFile_(self, application, fileName):
pass
因为NSApplicationDelegate
是一个“非正式协议”并且方法是可选的there's no need in Python to declare your conformance。如果有,协议将在 Python 端由 mixin 样式的类表示,并且您的类定义如下所示:
class AppDelegate (NSObject, NSApplicationDelegate):
pass
【讨论】:
添加 'self' 作为 def 子句的第一个参数。效果很好!非常感谢:D 哦,是的,对此感到抱歉:这是由大脑编译的,我已经有一段时间没有做过 PyObjC 了。很高兴我能帮上忙。以上是关于在 PyObjC 中为 openFile 实现 NSApplication 委托协议的主要内容,如果未能解决你的问题,请参考以下文章