Mac用アプリをpy2appとPython3を使って作ろう!!


始めに

今回は前回の記事で作成したpythonのプログラムがあるのですが、風の噂でPythonのアプリ化がpy2appを使うと簡単に出来ると言う事で実際にアプリ化してやろうと言う魂胆です。是非最後までお楽しみ下さいm(_ _)m
✳︎この記事はPython3,Tkinter,pip3がインストールされている前提で話を進めます

アプリ化するメリットとは?

プログラムを実行するのは簡単なのに何故アプリ化をする必要があるのかと思った人もいるのでは無いでしょうか?僕が考える理由は二つです。その1:アプリ化する事で共有が簡単になる.その2:配布する事が簡単になります。

アプリ化の手順

ステップ1

アプリ化するにはプログラムが無いとお話になりません。なのでTkinterを使ったPythonのコードを用意しましょう。よければこれをお使い下さい。ですが、前回の記事のコメントの方で自分より綺麗なコードを載せてくれている人が居たのでそちらの方が書いた物を参考にすると良いと思います。

import tkinter as tk
import random

# ボタンが押された時の処理
def dice(event):
    # ランダムな整数を生成して、labelの内容を書き換える
    value["text"] = random.randint(1,6)


root = tk.Tk()
root.title("Dice.app")
root.geometry('200x150')

value = tk.Label(text="0",font=("",80))
value.pack(fill = 'x', padx=20, side = 'top')

Btn = tk.Button(text='サイコロをふる',width=10)
Btn.bind("<Button-1>", dice)
Btn.pack(fill = 'x', padx=20, side = 'top')


root.mainloop()

ステップ2

appというフォルダを作成して、先ほどプログラムファイルをappの中に入れて下さい。次にterminalを出して次のコマンドを打って下さい

pip3 install py2app

これでpy2appのインストールは完了です。
次にターミナルでappのフォルダ内に移動して、次のコマンドを打って下さい(diceの部分は自分の保存したファイルの名前にして下さい)

py2applet --make-setup dice.py

このコマンドでsetup.pyを生成します。

ステップ3

次にicnsイメージを用意します。このイメージがアプリのアイコンになります。まずは適当な画像を用意します。僕はこのサイトの写真を使わせて貰いました。次にImage2iconと言うアプリをダウンロードして下さい。このアプリでicnsイメージを作成します。
インストールできたらアプリを起動してアイコンにしたい画像をドラックアンドドロップします。その後書き出すのボタンからICNSを選択したら保存場所をappに指定して、ICNSが出来るのを待ちましょう。

ステップ4

setup.pyを開いて次のように変更して下さい(APPの所は自分の作ったプログラムの名前を、OPTIONSの所はdice.icnsのところは自分のicnsファイルの名前に変更)

"""
This is a setup.py script generated by py2applet

Usage:
    python setup.py py2app
"""

from setuptools import setup

APP = ['dice.py']
DATA_FILES = []
OPTIONS = {'iconfile': 'dice.icns'}

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

最後にterminalでこのコマンドを叩いで終わりです。

python3 setup.py py2app

これでアプリは完成です。実際のアプリはappフォルダのdistに保存されています!

最後に

自分はXcodeでのアプリ開発しかやった事しか無かったのでこんなに一瞬でアプリが作れてびっくりしました。
みなさんもぜひアプリを作ってみて下さい!!

✳︎この記事を書いているのはプログラム初心者なので気軽にコメントして下さい

参考サイト:https://ebi-works.com/python-desktop-app/