Python
 Computer >> コンピューター >  >> プログラミング >> Python

依存関係を含むPython Tkinterアプリケーションをバンドルして実行ファイル化する方法

Tkinterで作成したアプリケーションを、単体で動作するポータブルな実行ファイルとして配布したいケースは多くあります。Pythonには、依存ライブラリを含むアプリケーション全体のコードを1つのインストーラー形式にまとめるためのパッケージが複数用意されており、これらのツールはコードを圧縮し、スタンドアロンアプリケーションを実行可能ファイルへと変換してくれます。

OSごとにおすすめのツールは以下の通りです。

  • Windows:py2exe
  • Linux:Freeze
  • Mac:py2app

例:Windows向けアプリのバンドル手順

ここでは、画面に「Hello World」と表示するWindows向けアプリケーションを例に説明します。まず、メインのアプリケーションファイルと同じディレクトリ内にsetup.pyを作成します。次に、このsetup.pyにメインアプリのファイル名を引数として渡すことで、ビルド時の動作を拡張・設定します。

setup.py の内容

from distutils.core import setup
import py2exe

setup(console=['main_app.py'])

続いて、コマンドシェルからpy2exeパッケージを使ってsetup.pyを実行します。コマンド実行後、同じディレクトリ内にdistフォルダが生成され、その中に「main_app.exe」という名前の実行ファイルが作成されます。

main_app.py の内容

# tkinterライブラリをインポート
from tkinter import *

# tkinterフレームのインスタンスを作成
win = Tk()

# ウィンドウサイズを設定
win.geometry("600x400")

def present():
    Label(win, text="Hello World", font=('Times New Roman bold',30)).pack(pady=10)

Button(win, text="Click Me", command= present).pack(pady=20)
win.mainloop()

実行結果

生成されたmain_app.exeを実行すると、ボタンとラベルが配置された次のようなウィンドウが表示されます。

依存関係を含むPython Tkinterアプリケーションをバンドルして実行ファイル化する方法

  1. PythonのTkinterでスレッドを使う方法|threadingモジュールによる非同期処理の基本

    Tkinterでは、スレッド(Threading)を活用することで、複数の関数を同時に実行できます。これにより、アプリケーション内の処理を非同期で動かすことが可能になります。 Pythonでスレッドを使用するには、まずthreadingモジュールをインポートし、そのThreadクラスを継承した新しいクラスを定義します。そして、クラス内でrunメソッドをオーバーライドし、実行したい処理をその中に記述します。 つまり、スレッドを使えば複数の作業を並行して進めることができます。Tkinterアプリケーションでスレッドを実現する際は、Thread()関数を利用します。 ここでは、「一定時間スリープした

  2. Python Tkinterでキャンバス上の画像を中央に配置する方法

    Tkinterを使ってGUIアプリケーションを開発している際、Tkinterのキャンバス(Canvas)上に画像を読み込みたいケースはよくあります。本記事では、その画像をキャンバスの中央に配置する方法を解説します。anchorパラメータとはデフォルトでは、キャンバスは画像を自身の幅と高さに従って配置します。しかし、anchor(アンカー)パラメータに方向の値を渡すことで、画像の位置を任意の方向(N:北、S:南、E:東、W:西、NS、EWなど)に操作できます。アンカーは画像関数と一緒に呼び出されるパラメータで、キャンバス内における画像の方向や位置を定義します。このanchorパラメータを活用すれ