早速やってみました。チュートリアルチック?
今回試したのは、ボタンを押したらテキスト部分に「こんにちわ」と出るだけのアプリです。
- Xcode新規プロジェクトを立ち上げて Cocoa-Python Application を選ぶ*1
- 新規ファイルで、Python NSObject subclassを追加。(名前はMyController.pyにした)
- MyController.pyの編集。encoding指定行は先頭に持ってくること。
# encoding=utf-8 from Foundation import * import objc class MyController(NSObject): textarea = objc.IBOutlet() @objc.IBAction def buttonPushed_(self,sender): self.textarea.setStringValue_(u"こんにちわ")
- main.pyを編集。以下を追加して、利用可能にする。
import MyController
- MainMenu.xibってファイルを探してダブルクリック。ここからInterface Builderへ。
- Tools > LibraryとTools > Inspector は表示しておく
- Tools > Libraryから、NSButtonとNSTextFieldを見つけてウィンドウへ配備
- Tools > LibraryからNSObjectをMainMenu.xibへドラッグ。インスペクタからクラスをMyControllerとする。
- Ctrlを押しながら、ボタンからMyControllerへドラッグ。buttonPushed: へ接続
- Ctrlを押しながら、MyControllerからテキストエリアへドラッグ。textareaへ接続
これで完成です。イヤー簡単。*2
ところで、昔はInterface Builder内でアクションやアウトレットを指定してから、それをXcodeのソースに反映させるやり方が普通だった気がするんですが、今日、Interface Builderのドキュメントをチラ見したら、Xcodeでソース編集してInterface Builderからそれを読み取ってね、ってなってました。IBからXcodeへソース生成の機能もなくなってるっぽいです*3。いつ変わったんだろ??
*1:プロジェクト名は適当に
*2:最初Objective-Cの世界のメッセージ名にアンダースコアを使っててかなりハマったってのは秘密。:と_を変換するので、_入りのメッセージ名はNGです。
*3:プロジェクト外の適当なPATHには出せるけど、マージは自分でやれって書いてました