LoginSignup
4
2

More than 5 years have passed since last update.

PyObjC で HelloWorld - Xcode編

Posted at

開発環境の準備

Xcodeをインストール後、http://qiita.com/tom-u/items/134e2b8d4e11feea8e12 の通りに環境を整える。

Xcodeのバージョンは 8.3.1 を使用しました。

HelloWorld プロジェクトの作成

プロジェクトのテンプレートは External Build System を使用する。

create.jpg

template.jpg

option.jpg

save.jpg

info.jpg

Makefile の作成

プロジェクトにMakefileを新規追加する。

newfile.jpg

empty.jpg

makefile.jpg

createdmakefile.jpg

Makefileの内容は下記の通り。Makefileを書いたことがない人は インデントにタブコードを使用 することに注意。

build:
    python setup.py py2app --alias

clean:
    rm -rf ./build/ ./dist/

install: clean
    python setup.py py2app

run:
    ./dist/HelloWorld.app/Contents/MacOS/HelloWorld

launch:
    open ./dist/HelloWorld.app

HelloWorld.py と setup.py の作成

Makefile 同様に HelloWorld.pysetup.py を作成する。

HelloWorld.py
# -*- coding: utf-8 -*-
print('Hello Python')

from Foundation import NSLog
NSLog('Hello Python')

from AppKit import NSAlert
alert = NSAlert.alloc().init()
alert.setMessageText_('Hello Python')
alert.runModal()
setup.py
"""
This is a setup.py script generated by py2applet

Usage:
    python setup.py py2app
"""

from setuptools import setup

APP = ['HelloWorld.py']
DATA_FILES = []
OPTIONS = {
    'packages': ['objc']
}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

make の build clean install 実行方法

ターミナルから通常の make コマンドで実行するのと同じく Xcode 上からも実行が可能。

build - アプリ作成

build.jpg

clean - アプリ削除

clean.jpg

install - 配布用にアプリを作成

install.jpg

プロジェクトの実行

実行設定の為にあらかじめプロジェクトをビルドしてアプリを作成する。作成が完了したら以下の手順で実行の設定を行う。

editscheme.jpg

choosetorun.jpg

choseapp.jpg

editedtorun.jpg

設定後、 Run ボタンをクリックして実行する。

run.jpg

デバッグ例

コードに pdb のデバッグコードを記述すると可能。デバッグ実行は通常の実行と同じく Run ボタンのクリックで。Xcode 下部にメッセージが表示され pdb コマンドの入力待ちになるのでターミナル上と同様にキーボード操作でデバッグを行う。

HelloWorld.py
# -*- coding: utf-8 -*-
print('Hello Python')

from Foundation import NSLog
NSLog('Hello Python')

# for debugging
import pdb; pdb.set_trace()

from AppKit import NSAlert
alert = NSAlert.alloc().init()
alert.setMessageText_('Hello Python')
alert.runModal()

debugging.jpg

中断操作は pdb操作の他に Run ボタン右隣りの Stop ボタンをクリックでも可能。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2