
まくまく
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化することができました。