Pythonの文法はだいぶ書けるようになったけれど、「もっと目に見えて動くものを作ってみたい!」と感じていませんか? そんなときに最高の入口になるのが、デスクトップアプリ作りです✨
ウィンドウが立ち上がり、ボタンを押せば処理が走り、Excelにデータが保存される──そんなアプリが、Python標準ライブラリ「Tkinter」だけで作れてしまいます。追加インストール不要、コピペでも動かせる手軽さで、初心者から中級者へ羽ばたく最高の一歩になりますよ🚀
デスクトップアプリとは、その名のとおりパソコンのデスクトップ上で動くアプリのこと。普段「アプリ」と聞くとスマホアプリを思い浮かべがちですが、スマホアプリはパソコンにはインストールできません。逆に今回作るデスクトップアプリは、スマホやタブレットでは動かず、あなたのPCの中だけで動く専用ツールになります💻
使うライブラリはPython標準のTkinter。インストール不要で、importするだけですぐ始められるのが嬉しいポイントです。Excel操作ライブラリ(openpyxl)と組み合わせれば、入力したデータをExcelに保存する“ちゃんと使える”アプリも作れます📊
Tkinterでまず覚えたいのが、Tkオブジェクトです。これがアプリの一番外側、表示される全体のウィンドウになります。
import tkinter
root = tkinter.Tk()
root.title("サプアプリ")
root.geometry("400x300")
root.mainloop()
たったこれだけのコードで、タイトルバーに「サプアプリ」と書かれた400×300pxの真っ白なウィンドウが立ち上がります🎉
tkinter.Tk():アプリの土台(トップレベルウィジェット)を作成title():ウィンドウ上部に表示するタイトルを設定geometry("横x縦"):起動時の画面サイズをピクセル指定mainloop():アプリを起動させる呼び出し(これがないと閉じてしまう)「ウィジェット」とは、ウィンドウ・ボタン・メニューといった画面に表示される部品の総称。Tkinterは部品の組み合わせでアプリを組み立てていく発想です🧩
次に、土台の上に小さなアプリ本体を載せていきます。TkinterのFrameクラスを継承して、自前のApplicationクラスを作るのが定番のスタイルです。
class Application(tkinter.Frame):
def __init__(self, root):
super().__init__(root, width=400, height=300,
borderwidth=4, relief="groove")
self.root = root
self.pack()
self.pack_propagate(0)
self.create_widgets()
def create_widgets(self):
# ここにボタンやテキストボックスを書いていく
pass
少し難しく見えるかもしれませんが、ここはほぼテンプレートとしてコピペでOK。重要なのは「土台のrootを引数で受け取り、インスタンス変数に保持しておく」ことだけです。これでクラス内のどのメソッドからもrootにアクセスできるようになります🔑
まずはアプリを終了させるボタンから作ってみましょう。ウィジェットの作成はcreate_widgetsメソッドにまとめておくと、後で見返したときに分かりやすくなります。
def create_widgets(self):
self.btn_close = tkinter.Button(self)
self.btn_close["text"] = "閉じる"
self.btn_close["command"] = self.root.destroy
self.btn_close.pack(side="bottom")
text:ボタンに表示する文字command:押されたときに実行する処理(ここではroot.destroyでアプリ終了)pack(side="bottom"):画面下部に配置実行すると、フレームの下に「閉じる」ボタンが現れ、クリックするとアプリが終了します。ボタンを押す=関数を呼び出すというシンプルな仕組みを覚えれば、応用は無限大です🎯
次に、ユーザーから文字を受け取って処理する仕組みを足してみましょう。テキストボックスはtkinter.Entryクラスで作成します。
def create_widgets(self):
self.text_box = tkinter.Entry(self, width=10)
self.text_box.pack()
self.btn_run = tkinter.Button(self, text="実行",
command=self.input_handler)
self.btn_run.pack()
self.message = tkinter.Message(self)
self.message.pack()
self.btn_close = tkinter.Button(self, text="閉じる",
command=self.root.destroy)
self.btn_close.pack(side="bottom")
def input_handler(self):
text = self.text_box.get()
self.message["text"] = text + "!"
テキストボックスに何か入力して「実行」ボタンを押すと、入力文字列に「!」が付いて画面下に表示されます💬 入力→処理→出力という、アプリの基本サイクルがここで完成です。
ここまでのアプリは閉じるとデータが消えてしまう「揮発型」。電卓アプリならそれでOKですが、スケジュールアプリやメモアプリでは入力したデータを永続化したいですよね。最も手軽な方法が、Excelファイルにデータを書き込むやり方です📊
import tkinter
from tkinter import filedialog
import pathlib
import openpyxl
def save_data(self):
text = self.text_box.get()
file_path = filedialog.askopenfilename(
initialdir=pathlib.Path().cwd())
wb = openpyxl.load_workbook(file_path)
ws = wb.worksheets[0]
ws["B1"].value = text
wb.save(file_path)
self.message["text"] = "保存完了"
処理の流れを追ってみましょう。
filedialog.askopenfilenameでExcelファイル選択ダイアログを表示openpyxl.load_workbookで選択されたファイルを開くwb.saveで保存し、画面に「保存完了」を表示反対に「読み込みボタン」を用意すれば、保存しておいたExcelの値をアプリの画面に呼び戻すこともできます。アプリを一度閉じても、また起動したときに前回のデータが復活する──これが永続化の威力です✨
Tkinterには今回使ったButton・Entry・Messageのほかにも、ラベル・チェックボックス・ラジオボタン・リストボックス・キャンバスなど多彩なウィジェットが揃っています。「Tkinter ウィジェット」で検索すると一覧が出てくるので、作りたいアプリに合わせてパーツを組み合わせるだけで、世界に一つだけのオリジナルアプリが完成します🛠️
動画と合わせて手元に1冊あると、Tkinter単体だけでなく「Pythonでアプリを設計する力」がぐっと育ちます。レベル別に厳選してご紹介します📖
Tkinterに入る前段階として、変数・関数・クラス・継承の理解は必須。図解と会話で進む入門書なら、つまずきポイントを丁寧に潰せます。
クラスの継承や例外処理といった「アプリ作りに必要な基礎」を網羅。super().__init__()がなぜ必要なのか、地続きで理解できます。
Excel自動化、ファイル操作、GUIなど「実用スクリプトの作り方」が満載。今回のアプリの延長線で、自動化ツールを量産したくなる一冊です⚙️
クラス設計、デコレータ、コンテキストマネージャなど「Pythonらしいアプリ設計」の作法を学べる定番。Tkinterアプリのコードがぐっと洗練されます。
アプリが大きくなってきたときに必須となる「壊れにくい設計」のノウハウが詰まった一冊。型ヒント・モジュール分割・テストの考え方まで身につきます🛡️
いいえ、不要です。TkinterはPython標準ライブラリなので、Pythonさえ入っていればimport tkinterするだけで使えます。Excel連携で使うopenpyxlだけはpip install openpyxlが必要です📦
Tkinterは標準ライブラリで手軽、見た目はシンプル。PyQtはリッチで本格的なUIが作れる反面ライセンス・学習コストが高め、Kivyはモバイル対応に強み。「まず動くものを作りたい」ならTkinter、商用レベルを目指すならPyQtという棲み分けです。
できます。小さなアプリなら関数だけでも書けます。ただしボタンの数が増えたり、ウィジェット間でデータをやり取りするようになると、クラスにまとめた方が圧倒的に管理しやすいのでおすすめです。今回のテンプレートをそのまま使い回すのが近道です。
テキストファイル、CSV、JSON、SQLite(標準ライブラリ)などが定番です。Excelは「人間が直接開いて確認できる」のがメリット。プログラム同士でやり取りするだけならJSONやSQLiteの方が扱いやすい場面もあります。用途で使い分けましょう🗃️
Tkinterの拡張版であるttk(themed Tkinter)を使うと、OSネイティブ風の見た目に切り替えられます。さらに本格的なデザインを求めるなら、customtkinterなどのサードパーティライブラリも検討してみてください✨
Tkinterは派手なライブラリではありませんが、「思いついたツールをサクッと形にする」のに最適な相棒です。今回紹介した流れ──ウィンドウを作る → ボタンとテキストボックスを置く → 処理を関数化する → Excelにデータを保存する──をマスターすれば、業務の小さな手間を解消するオリジナルアプリを次々と作れるようになります🛠️
まずはコピペでも構いません。動くものを目の前で見ると、コードの理解が一気に進みます。気づいたとき、あなたは「Pythonでアプリを作れる人」に変わっているはずです🌟 さあ、自分だけのアプリ作りを始めましょう!