Xcode3.0でPython-Cocoaアプリ - SimpleTable.app 01
投稿日:2007/11/12 02:56:41
過去の記事は移行時の問題により、画像が表示されなかったり、レイアウトが崩れたりしている可能性があります。
Tweet
引き続き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を追加。
ビルドして進行。
↓
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
まだ登録されていません。