Xcode3.0でPython-Cocoaアプリ - SimpleTable.app 01

現在このブログは中途半端に移行されていますので、画像が表示されなかったり、レイアウトが崩れたりする可能性があります。
この記事を旧ブログで閲覧するには、以下のURLからご覧ください。
http://blog2.monospace.jp/2007/11/12/xcode3_cocoa_python_simpletableapp/

引き続きPython&Cocoa;を勉強中です。 なんかPyObjCを勉強するより、Objective-C覚える方が早い気もしてきます。 とにかくPython-Cocoa関連の情報が少ないので、こんなんでも苦労しました。 ちなみにLeopardに搭載されてるPyObjCはPyObjC2だそうで。 前回力をいれすぎて疲れたので、省エネモードで。 今回は、テーブル表示するアプリを作ってみました。 まずは、プロジェクト作成(Python-Cocoa Application) ↓ MainMenu.xibをダブルクリックして、InterfaceBuiler(IB)を起動。 ↓ AppController(NSObject)を作成し、 WindowにLabel(NSTextField), Table View(NSScrollView), Push Button(NSButton)を配置して、Action, Outletをつなぐ。 Table ViewからAppControllerへdataSourceをつなぐ。 さらに、テーブルのカラムを選択して、TitleとIdentifierを設定。Identifierは後で使用します。 ↓ AppControllerを選択した状態で、File->Write Class Files...を実行。 LanguageをPythonで書き出す。 ↓ Xcodeに戻り、Classesグループの上で右クリック->追加->既存のファイルで、 さっき書き出したAppController.pyを読み込む。 ↓ AppController.pyを以下のように編集。 データとして、16色のカラーチャートとその16進数表記を使います。 numberOfRowsInTableView_とtableView_objectValueForTableColumn_row_は、 NSTableViewを使用する際に、実装しなければならないメソッドです。 [python] # vim: fileecoding=utf8 from Foundation import * from AppKit import * import objc class AppController(NSObject): ### テーブルに表示するデータ。カラー名と16進数の辞書 colors = {'black': '#000000', 'gray': '#808080','silver': '#C0C0C0', 'white': '#FFFFFF', 'maroon': '#800000', 'red': '#FF0000', 'purple': '#800080', 'fuchsia': '#FF00FF', 'green': '#008000', 'lime': '#00FF00', 'olive': '#808000', 'yellow': '#FFFF00', 'navy': '#000080', 'blue': '#0000FF', 'teal': '#008080', 'aqua': '#00FFFF'} tableView = objc.IBOutlet() titleLabel = objc.IBOutlet() @objc.IBAction def getColorList_(self, sender): """ボタンをクリックしたときに、titleLabelの設定とテーブルのリロードを行う""" self.titleLabel.setStringValue_(u'HTML ColorName List') self.tableView.reloadData() def numberOfRowsInTableView_(self, tableView): """実装しなければならないメソッド。データのレコード数を返す。""" return len(self.colors) def tableView_objectValueForTableColumn_row_( self, tableView, tableColumn, row): """実装しなければならないメソッド。引数rowの行に入るデータをカラムごとに設定""" identifier = tableColumn.identifier() # IBで設定したIdentifierを取得 if identifier == u'name': return self.colors.keys()[row] elif identifier == u'hexcode': return self.colors.values()[row] return None [/python] main.pyにimport AppControllerを追加。 ビルドして進行。
Posted at: 
2007/11/12 02:56:41
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2007/11/12/xcode3_cocoa_python_simpletableapp/trackback/

TrackBacks

まだ登録されていません。

Comments

まだ登録されていません。

Add Comment

Add Comment