0

py2app バンドルされた Python 2.7 アプリケーションで appscript と aemreceive を使用して、着信 Apple Events を受け入れ、アプリと通信する外部アプリケーションに Apple Events としてアプリの出力を返します。

これは非常にうまく機能しますが、例外が 1 つあります。辞書を返すとき、これらの文字のないキーが必要な場合に、キーがパイプ文字で囲まれます。

例: この応答を外部アプリに送信したい場所:

{has description:true, folder:file "travellerHD:Users:andre:Desktop:MyNewFile"}

代わりに、私のアプリはこれを送信します:

{|has description|:true, |folder|:file "travellerHD:Users:andre:Desktop:MyNewFile"}

イベント ハンドラーは、次のコードを使用してインストールされています。

aemreceive.installeventhandler(get_property, "coregetd",
                               ('----', 'request_string',
                                aemreceive.kae.typeAERecord),
                              )

ここで、「get_property」は、外部アプリがアイテムの位置情報を要求すると呼び出される関数の名前です。この関数は辞書を返します。

return {'has description': asset.has_description,
        'folder': mactypes.File(asset.folder)}

アプリのキーとして「folder」などの Apple Events の予約語を使用する場合、またはキーにスペースや非 ASCII 文字を使用する場合は、キーをパイプで囲む必要があることを知りました。したがって、「has description」からスペースを削除するか、「folder」キーの名前を「myfolder」に変更すると、アプリはキーをパイプで囲むことなく辞書を返します。

ただし、アプリと通信する外部アプリでは、アプリが「フォルダー」キーだけでなく、空白のキーを使用する必要があります。

何か案は?

よろしくお願いします。

4

1 に答える 1

0

それがどのように機能するかを理解しました。

私の sdef ファイルでは、プロパティが定義されています。

<property name="has description" code="ashd" type="boolean" description="Whether the library has an XML description.">
</property>
<property name="folder" code="asfd" type="file" description="Directory in which the library files exist.">
</property>

次のようにキーを文字列として返す代わりに:

return {'has description': asset.has_description,
        'folder': mactypes.File(asset.folder)}

4 つの文字コードを返すだけで、aem に面倒な作業を任せることができます。

return {aem.AEType('ashd'): asset.has_description,
        aem.AEType('asfd'): mactypes.File(asset.folder)}
于 2016-07-11T14:19:05.357 に答える