Python CustomTkinterで作成したGUIアプリをEXEファイルにする方法

まくまく
まくまく
CustomTkinter で作成したGUIアプリをEXEファイル化してみましょう!自分専用のデスクトップアプリにしてもよいですし、友人や同僚たちに配布するような使い方もできます。



サンプルプログラム

テスト用に以下のようなプログラムを書いてみました。実行すると、テキスト入力してボタンを押すと、ボタン下のラベルが書き換わるといったシンプルなものです。

import customtkinter
import tkinter

class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()

        self.title("exe化のテスト")
        self.minsize(400, 300)

        self.entry = customtkinter.CTkEntry(master=self,
                               placeholder_text="ここにテキストを入力",
                               width=300,
                               height=25,
                               border_width=2,
                               corner_radius=10)
        self.entry.pack(padx=20, pady=20)

        self.button = customtkinter.CTkButton(master=self,
                                 width=300,
                                 height=50,
                                 border_width=0,
                                 corner_radius=10,
                                 text="ボタン",
                                 command=self.button_callback)
        self.button.pack(padx=20, pady=20)

        self.text_var = tkinter.StringVar(value="入力されたテストを表示")
        self.label = customtkinter.CTkLabel(master=self,
                               textvariable=self.text_var,
                               width=120,
                               height=25,
                               corner_radius=8)
        self.label.pack(padx=20, pady=20)
        
    def button_callback(self):
        self.label_get = self.entry.get()
        self.text_var.set(self.label_get)

if __name__ == "__main__":
    app = App()
    app.mainloop()

pyinstallerでEXE化する方法

上のものをEXE化してみようと思いますが、公式docを見ていると、従来のtkinterで行うexe化とは少し異なるような感じ?のような印象。

Windows で pyinstaller を使用して .exe を作成する場合、考慮しなければならないことが 2 つあります。 まず、customtkinter ライブラリには .py ファイルだけでなく、.json や .otf などのデータ ファイルも含まれているため、pyinstaller の –onefile オプションを使用できません。 PyInstaller はそれらを単一の .exe ファイルにパックできないため、 –onedir オプションを使用する必要があります。

公式docに従ってonefileをやめてonedirでexe化してみます。pyinstallerを使用して以下のコマンドを実行するとうまくEXE化することができました。(ユーザー名は自身のものに書き換えてください)

pyinstaller exetest.py --onedir --noconsole --add-data "C:\users\ユーザー名\appdata\local\programs\python\python38\lib\site-packages\customtkinter;customtkinter/"

ちなみにonefileだと、、、

pyinstaller exetest.py --onefile --noconsole --add-data "C:\users\ユーザー名\appdata\local\programs\python\python38\lib\site-packages\customtkinter;customtkinter/"

あれ、、うまくできました。問題なく動作してますが。。。

NuitkaでEXE化する方法

NuitkaでもEXE化してみましょう。以下のコマンドを実行してみます。

nuitka --onefile --follow-imports --enable-plugin=tk-inter --disable-console exetest.py

こちらもOKです。うまくEXE化することができました。

タイトルとURLをコピーしました