代码之家  ›  专栏  ›  技术社区  ›  Lloeki

从python访问API objc常量和枚举

  •  1
  • Lloeki  · 技术社区  · 15 年前

    这种常数的一个例子是 NSRunningApplication 页,特别是NSApplicationActivationPolicy的三个可能值。

    对于context,当前的任务是列出当前正在运行的面向用户的应用程序。为此,以下代码工作正常:

    from Foundation import *
    from Cocoa import *
    import objc
    
    for runningApp in sorted(
                         NSWorkspace.sharedWorkspace().runningApplications(),
                         key=lambda x: x.localizedName()
                      ):
        if runningApp.activationPolicy() == 0:
            # Do stuff
    

    但我不想检查零(使其更具可读性),也不想在我自己的代码中硬编码一个虚拟的NSApplicationActivationPolicyRegular值为零,因为它在原始库中很容易获得。

    1 回复  |  直到 15 年前
        1
  •  1
  •   jscs    15 年前

    苹果提供的PyObjC早于10.6版可可中添加的一些成分。 NSRunningApplication

    这三条线将覆盖 enum 你想用。

    <enum name='NSApplicationActivationPolicyRegular' value='0' />
    <enum name='NSApplicationActivationPolicyAccessory' value='1' />
    <enum name='NSApplicationActivationPolicyProhibited' value='2' />