Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

Xcode3.0でPyObjC

早速やってみました。チュートリアルチック?


今回試したのは、ボタンを押したらテキスト部分に「こんにちわ」と出るだけのアプリです。

  • 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。いつ変わったんだろ??




追記。Rubyな方はこちらで動画見ましょう。

*1:プロジェクト名は適当に

*2:最初Objective-Cの世界のメッセージ名にアンダースコアを使っててかなりハマったってのは秘密。:と_を変換するので、_入りのメッセージ名はNGです。

*3:プロジェクト外の適当なPATHには出せるけど、マージは自分でやれって書いてました