@objc.python_method

macOS に入っている unzip はパッチが当たっていない Unicode 非対応な奴。
NSTask で使うと日本語でエラーになるので制限を付ける必要があった。

PyObjC では Python3 の zipfile モジュールを使えば何も問題なくね?
と思って使ってみたら、やっぱり文字化けしたw
でもコッチなら文字化けしたままエラーにならず画像を取り出しできるじゃないの。
よし unzip 問題は解決だ。

しかし PyObjC プログラミングは結構きつい!
まったく例外を吐いてくれない、エラーになったらフリーズするだけ。
チビッと書いて動かしてを繰り替えさないとドコでエラーになったか全然ワカンネ。

例外がウルトラ親切な PyGObject ってマジ神仕様だよ。
アレで何も作れなかったら他の環境なんて絶対に無理と断言できるくらい。

それとサブクラスにはまいった。

FieldGraph ? PyObjC ? the Python ? Objective-C bridge

NSObject を継承するとメソッドの定義に制限を食らう。
つまりメソッドの定義は Objective-c の関数変換と同様にする必要あり。
引数の数だけアンダーバーが必須、最後にアンダーバーが必要だとか。

#def change_pixbuf(self, num): # Error
def changePixbuf_(self, num):

みたいな。

@objc.IBAction はデフォルトだから書く必要は無いみたい。
Python のメソッドらしいスネークケースにするには

@objc.python_method
def change_pixbuf(self, num):

のデコレーターが必須。

ハンドラと関数はやっぱり別表記にしたいよね。
それを見つけるまで半日近く、日本語情報は皆無に近いし。

Python で作っても NSOpenPanel で警告が出るじゃん。
jxa てか osascript のせいでは無かったようで。

そんなんでもなんとかココまで作れた、ページめくりもできる。
まだ超作りかけだけど参考用とバックアップを兼ねて置いとく。
comipoli_pyobjc1.tar.gz