当我使用 PyObjC 时,带有 PyDev 的 Eclipse 不会向我显示正确的代码完成。我用谷歌搜索了这个问题,并在这篇文章中找到了原因。这篇文章说 PyDev 无法读取 bridge-support 文件中的信息,这就是这个问题的原因。
我知道这个问题可以通过编写预定义的完成来解决。但是 PyObjC 中有大量的类/方法。例如,AppKit
模块本身包含230393 个类,AppKit.NSWindow
其中包含26991 个方法。(我在 PyDev 中使用interpreterinfo.py
and来计算它们)pycompletion.py
有没有什么通用的方法可以生成大量 PyDev 的 pledefined 完成脚本?或者当我使用 PyObjC 时有什么方法可以正确完成?
添加于 2013/03/12 07:56(JST)
我在PyDev 中添加objc
, Foundation
, AppKit
,Cocoa
等等。Force Builtin
现在 PyDev 向我展示了比以前更多的建议。alloc()
但是 PyDev在 PyObjC 的类中找不到方法。通常情况下,我们初始化 NSWindow 如下:
from Foundation import *
from AppKit import *
:
:
window = NSWindow.alloc().initWithContentRect_styleMask_backing_defer_(
rect,
style_mask,
backing,
flag)
所以我想alloc()
在我输入后作为完成候选人window = NSWindow.
。
第一个问题alloc
是 PyDev(和其他 IDE,如 PyCharm)在任何 pyobjc 的类上都找不到方法。我试图alloc
通过使用交互式 shell 来查找方法,但我也找不到。
第二个问题是,由于第一个问题,当我创建 NSWindow 实例(或 PyObjC 中的任何实例)时,PyDev 无法分析变量的类型。所以 PyDevinitWithContentRect_styleMask_backing_defer_
在我输入window = NSWindow.alloc().
.
如果您知道解决此类问题的方法,请告诉我。