PythonでGUIアプリは作れるの?TkinterやCustomTkinterで自分専用のツールを自作してみる
Pythonを学習していて、黒い画面に文字が出るだけのプログラムに少し飽きてしまったことはありませんか。 多くの初心者の方が、次に目指すステップとしてボタンがあったりマウスで操作できたりする画面を作りたいと考えます。
実は、PythonはGUI開発においても非常に優れた言語であり、標準ライブラリだけで本格的なウィンドウ画面を作成することが可能です。 私も、自分専用のちょっとした便利ツールを自作するときは、今でもPythonのGUIライブラリを真っ先に活用しています。
この記事では、PythonでGUIを作るための定番ライブラリであるTkinterと、その進化系であるCustomTkinterについて詳しく解説します。
GUIアプリとは何か?なぜPythonで作るべきなのか¶
プログラミングを始めたばかりの頃に触れる、文字だけでやり取りする画面をCLI(コマンドラインインターフェース)と呼びます。 これに対して、ウィンドウやボタン、メニューなどをマウスで直感的に操作できる画面がGUI(グラフィカルユーザーインターフェース)です。
普段私たちがスマートフォンやパソコンで使っているアプリのほとんどは、このGUIによって構成されています。 なぜ、数あるプログラミング言語の中でもPythonがGUI開発におすすめなのか、その理由を深く紐解いていきましょう。
直感的に画面を組み立てられる手軽さ¶
PythonでGUIを作る最大のメリットは、画面の構成要素であるパーツをパズルのように組み合わせていける点にあります。 ボタンやテキスト入力欄などのパーツを、わずか数行のコードで画面に配置することが可能です。
他の言語では画面を作るだけで複雑な設定が必要な場合もありますが、Pythonなら本質的な機能の開発に集中できます。 この手軽さが、自分専用のツールをサクッと作りたいエンジニアに愛されている大きな理由です。
豊富なライブラリと圧倒的な学習リソース¶
Pythonには、初心者向けのシンプルなものからプロ向けの高度なものまで、数多くのGUIライブラリが存在します。 特に標準ライブラリのTkinterは世界中で使われているため、困ったときの解決策がすぐに見つかる安心感があります。
こちらの記事でも紹介している通り、Pythonの守備範囲は非常に広く、GUIもその強力な武器の一つなのです。 【関連記事】Pythonで作れるものとは?初心者向けに具体例と始め方を徹底解説
標準ライブラリ「Tkinter」の基本をマスターする¶
まずは、Pythonをインストールした瞬間に付いてくるTkinter(ティーキンター)から始めてみましょう。 新しくライブラリをインストールする必要がないため、今すぐその場でプログラミングを開始できるのが最大の魅力です。
エンジニア歴10年の経験から言えば、まずはこのTkinterでGUIの基本構造を理解するのが、最も効率的な学習方法です。 基本的なウィンドウを表示させるコードを書きながら、その裏側で何が起きているのかを見ていきましょう。
ウィンドウを表示する最小限のコード¶
GUIアプリを作るには、まず土台となるウィンドウを作成し、それを表示し続ける必要があります。 以下のコードをエディタに貼り付けて実行してみてください。
import tkinter as tk
# メインウィンドウを作成
root = tk.Tk()
root.title("マイアプリ")
root.geometry("400x300")
# 画面を表示し続ける(イベントループ)
root.mainloop()
画面が消えずに残り続けるのは、一番下のmainloopが動いているおかげです。 これは、ボタンが押されたりマウスが動いたりするのをプログラムがずっと待ち構えている状態を指します。
ウィジェットを配置して動きを付けてみよう¶
GUIのパーツであるボタンやラベルなどのことを、専門用語でウィジェットと呼びます。 ラベルを表示して、ボタンが押されたら文字が変わるような簡単な仕組みを作ってみましょう。
import tkinter as tk
def change_text():
# ラベルの内容を書き換える
label.config(text="ボタンが押されました!")
root = tk.Tk()
root.geometry("300x200")
# ラベルの作成
label = tk.Label(root, text="こんにちは")
label.pack(pady=20)
# ボタンの作成
button = tk.Button(root, text="クリックしてね", command=change_text)
button.pack()
root.mainloop()
ここで重要なのは、パーツを作った後に必ずpackなどの配置メソッドを呼ぶことです。 パーツを作っただけでは、まだ机の引き出しの中にしまってある状態で、画面というテーブルの上に並べてあげる作業が必要なのです。
CustomTkinterでモダンなデザインを手に入れる¶
Tkinterは非常に便利ですが、デザインが少し昔のOSのように感じられることがあります。 せっかくツールを自作するなら、最近のアプリのようなスタイリッシュな見た目にしたいですよね。
そこで登場するのが、Tkinterをベースに開発されたCustomTkinterというライブラリです。 これを使えば、ダークモード対応のモダンなGUIを驚くほど簡単に作ることができます。
モダンな見た目へのアップグレード手順¶
CustomTkinterは標準ライブラリではないため、最初に一度だけインストール作業が必要です。 ターミナルやコマンドプロンプトで以下のコマンドを入力してください。
pip install customtkinter
準備ができたら、先ほどのTkinterのコードをCustomTkinter版に書き換えてみましょう。 驚くほど似た書き方で、見た目だけが劇的に進化します。
import customtkinter as ctk
# 外観モードを設定("System", "Dark", "Light")
ctk.set_appearance_mode("dark")
app = ctk.CTk()
app.title("モダンなアプリ")
app.geometry("400x240")
# モダンなボタンを作成
button = ctk.CTkButton(app, text="Custom Button", command=lambda: print("Hello"))
button.pack(padx=20, pady=20)
app.mainloop()
いかがでしょうか。 ボタンの角が丸くなり、洗練された印象になったのが一目でわかるはずです。
なぜ初心者にこそCustomTkinterがおすすめなのか¶
CustomTkinterを強く推す理由は、単に見た目が綺麗だからだけではありません。 高解像度のディスプレイでも文字がボケにくく、非常に視認性が高いからです。
また、デフォルトで用意されている色の組み合わせが優れているため、デザインのセンスに自信がなくてもプロっぽく見えます。 自分で作ったツールが格好いいと、開発のモチベーションも格段に上がりますよね。
GUIライブラリの比較一覧表¶
Pythonには他にも有名なGUIライブラリがいくつか存在します。 自分の用途に合わせて最適なものを選べるよう、代表的なものを一覧表にまとめました。
| ライブラリ名 | 主な特徴 | 難易度 | おすすめの用途 |
|---|---|---|---|
| Tkinter | 標準搭載。情報が最も多い。 | ★☆☆ | 超入門・簡易ツール |
| CustomTkinter | モダンで綺麗。Tkinterの知識が使える。 | ★☆☆ | 個人用ツール・学習 |
| PyQt / PySide | 超高性能。多機能だが学習コストが高い。 | ★★★ | 商用アプリ・大規模開発 |
| Kivy | スマホアプリ化も可能。独特な記法。 | ★★☆ | マルチプラットフォーム |
| Flet | Flutterベース。Webアプリ化も容易。 | ★★☆ | モダンなWeb連携アプリ |
エンジニア歴10年の私の視点では、まずはTkinterかCustomTkinterから入るのが正解です。 ここでGUI特有の考え方を学べば、後から他のライブラリに乗り換えるのも決して難しくありません。
自分専用ツールを自作するための3ステップ¶
知識が揃ったところで、実際にツールを作っていく際の手順を具体的に整理してみましょう。 いきなりコードを書き始めるのではなく、少しだけ設計を意識すると開発がスムーズに進みます。
プロの世界でも、この準備段階を丁寧に行うかどうかが完成後の品質を左右します。 初心者の方が迷わないためのガイドラインをご紹介します。
ステップ1:必要な機能を紙に書き出す¶
まずは、そのツールで何を解決したいのかを明確にします。 例えば、特定のフォルダにあるファイルを一括でリネームするといった具体的な目標を立てましょう。
画面には、フォルダ選択ボタン、新しい名前の入力欄、実行ボタンが必要だな、と想像を膨らませます。 このとき、最初は欲張りすぎずに機能を絞り込むのが完成させるための最大のコツです。
ステップ2:ロジック(中身)を先に作る¶
画面を作る前に、まずはその機能が文字だけのプログラムとして正しく動くか確認します。 GUIはあくまで見た目であり、大切なのはその裏側で動く処理、つまりロジックだからです。
# まずは機能だけをテストする
def process_data(input_text):
# ここにメインの処理を書く
return input_text.upper()
中身がしっかり動くことが分かれば、あとはそれをボタンのクリックイベントに関連付けるだけです。 この分離して考える手法は、バグを防ぐためにも非常に有効な考え方です。
GUIアプリはユーザーが予想外の操作をするため、例外処理が特に重要になる場面が多いです。 【関連記事】Pythonの例外処理のアンチパターン5選をご紹介!|初心者がやりがちな「べからず集」
ステップ3:UI(見た目)を整えていく¶
最後に、ウィジェットを配置して画面を整えます。 パーツ間の余白を調整したり、ボタンに適切な色をつけたりして、使いやすくしていきます。
このボタンを押したら何が起きるか、ということが直感的にわかるように配置するのがポイントです。 自分で使いにくいと感じる部分は、他の誰にとっても使いにくいものであることを忘れないでください。
エンジニアが教える「GUI開発の落とし穴」¶
便利なGUI開発ですが、初心者が必ずと言っていいほどハマってしまうポイントがいくつかあります。 あらかじめ知っておくことで、無駄な試行錯誤の時間を大幅にショートカットしましょう。
10年の経験の中で、私も何度もこれらの罠にかかってきました。 特に重要なのが、プログラムが固まる現象と、配置マネージャーの混同です。
重い処理で画面がフリーズする問題¶
ボタンを押した後に、アプリが応答なしになってしまった経験はありませんか。 これは、プログラムが時間のかかる処理をしている間、画面を更新する仕事が止まってしまうために起こります。
GUIアプリは、常にユーザーの操作を待つという仕事を最優先でこなさなければなりません。 重い処理を行う場合は、少し高度ですが別のスレッドで動かすなどの工夫が必要になります。
配置マネージャーの混同に注意¶
Tkinterには、pack、grid、placeという3つの配置方法が用意されています。 これらを一つのウィンドウ内で混ぜて使うと、レイアウトが崩れたりエラーが出たりします。
基本的には、シンプルな配置ならpackを、Excelのように縦横を揃えたいならgridを選びましょう。 どちらか一方の方式に統一するのが、綺麗な画面を作るための鉄則です。
GUIのコードは記述量が増えがちなので、スッキリ書くコツも併せて学んでおくと役立ちます。 【関連記事】100行のコードが10行に?Pythonic(パイソンらしい)な書き方への第一歩
実践例:簡単な画像リサイザーを作ってみる¶
学んだことを活かして、実用的なツールのサンプルを見てみましょう。 画像ファイルを選択して、ボタン一つでサイズを変更するプログラムのイメージです。
GUIを組み合わせることで、プログラミングがぐっと身近なものに感じられるはずです。 以下の構成は、多くの便利ツールに応用できる基本的な形になっています。
import customtkinter as ctk
from tkinter import filedialog
def select_file():
# ファイル選択ダイアログを表示
filename = filedialog.askopenfilename()
label_path.configure(text=filename)
def resize_action():
# ここに画像処理のロジックを記述する
print("画像をリサイズしました")
app = ctk.CTk()
app.geometry("500x300")
btn_select = ctk.CTkButton(app, text="ファイルを選択", command=select_file)
btn_select.pack(pady=20)
label_path = ctk.CTkLabel(app, text="ファイルが選択されていません")
label_path.pack()
btn_run = ctk.CTkButton(app, text="実行", fg_color="green", command=resize_action)
btn_run.pack(pady=20)
app.mainloop()
このように、ファイル選択などのOS標準の機能も簡単に呼び出すことができます。 たったこれだけのコードで、自分だけのツールが形になり始めるワクワク感は格別です。
8. 完成したアプリを「exe化」して配布する¶
せっかく自分専用のツールを作ったら、Pythonが入っていない環境でも動かしたいですよね。 そんな時は、プログラムを.exeファイルなどの実行形式に変換しましょう。
これを使えば、友人や家族にプレゼントしたり、職場のパソコンで配布したりすることが可能になります。 最も有名なツールは、PyInstallerというライブラリです。
pip install pyinstaller
pyinstaller --onefile --noconsole my_app.py
このコマンドを実行するだけで、あなたのプログラムがアイコン付きのアプリに生まれ変わります。 自分が書いたコードが独立したアプリとして動く様子を見るのは、最高に楽しい瞬間です。
まとめ¶
PythonでのGUI開発は、単に便利なものを作るだけでなく、プログラミングの本質を学ぶ絶好の機会です。 ユーザーがどう使うかを考える視点は、将来どのような開発を行う上でも大きな武器になります。
まずは、小さな計算機や自分専用のメモ帳から始めてみてください。 TkinterやCustomTkinterを使えば、あなたの想像がすぐに具体的な形になります。
最初から完璧なものを作ろうとする必要はありません。 昨日より少しだけ便利な自分のためのツールを作ることが、エンジニアとしての確かな一歩になります。
ここまでお読みいただきありがとうございました。