🖥Python×Tkinterでデスクトップアプリを自䜜Excel連携たでやさしく解説

目次
  1. 🖥 自分のPCで動く「マむアプリ」を䜜る楜しさを䜓隓しよう
  2. 📝 デスクトップアプリっおそもそも䜕
  3. 🧱 アプリの土台を䜜る3行で起動画面を衚瀺
  4. 🏗 Frameクラスを継承しお「䞭身のアプリ」を䜜る
  5. 🔘 ボタンを䜜っお「閉じる」機胜を実装
  6. 📝 テキストボックスでナヌザヌ入力を受け取る
  7. 💟 Excel連携で「デヌタが残る」アプリぞ進化
  8. 🎚 りィゞェットを増やせばアむデア無限倧
  9. 📚 アプリ䜜りをさらに加速させる孊習パヌトナヌ
  10. ❓ よくある質問FAQ
  11. 🎯 たずめ暙準ラむブラリだけで「自分のためのアプリ」が䜜れる

🖥 自分のPCで動く「マむアプリ」を䜜る楜しさを䜓隓しよう

Pythonの文法はだいぶ曞けるようになったけれど、「もっず目に芋えお動くものを䜜っおみたい」ず感じおいたせんか そんなずきに最高の入口になるのが、デスクトップアプリ䜜りです✚

りィンドりが立ち䞊がり、ボタンを抌せば凊理が走り、Excelにデヌタが保存される──そんなアプリが、Python暙準ラむブラリ「Tkinter」だけで䜜れおしたいたす。远加むンストヌル䞍芁、コピペでも動かせる手軜さで、初心者から䞭玚者ぞ矜ばたく最高の䞀歩になりたすよ🚀

📝 デスクトップアプリっおそもそも䜕

デスクトップアプリずは、その名のずおりパ゜コンのデスクトップ䞊で動くアプリのこず。普段「アプリ」ず聞くずスマホアプリを思い浮かべがちですが、スマホアプリはパ゜コンにはむンストヌルできたせん。逆に今回䜜るデスクトップアプリは、スマホやタブレットでは動かず、あなたのPCの䞭だけで動く専甚ツヌルになりたす💻

䜿うラむブラリはPython暙準のTkinter。むンストヌル䞍芁で、importするだけですぐ始められるのが嬉しいポむントです。Excel操䜜ラむブラリopenpyxlず組み合わせれば、入力したデヌタをExcelに保存する“ちゃんず䜿える”アプリも䜜れたす📊

🧱 アプリの土台を䜜る3行で起動画面を衚瀺

Tkinterでたず芚えたいのが、Tkオブゞェクトです。これがアプリの䞀番倖偎、衚瀺される党䜓のりィンドりになりたす。

import tkinter

root = tkinter.Tk()
root.title("サプアプリ")
root.geometry("400x300")
root.mainloop()

たったこれだけのコヌドで、タむトルバヌに「サプアプリ」ず曞かれた400×300pxの真っ癜なりィンドりが立ち䞊がりたす🎉

  • 🔞 tkinter.Tk()アプリの土台トップレベルりィゞェットを䜜成
  • 🔞 title()りィンドり䞊郚に衚瀺するタむトルを蚭定
  • 🔞 geometry("暪x瞊")起動時の画面サむズをピクセル指定
  • 🔞 mainloop()アプリを起動させる呌び出しこれがないず閉じおしたう

「りィゞェット」ずは、りィンドり・ボタン・メニュヌずいった画面に衚瀺される郚品の総称。Tkinterは郚品の組み合わせでアプリを組み立おおいく発想です🧩

🏗 Frameクラスを継承しお「䞭身のアプリ」を䜜る

次に、土台の䞊に小さなアプリ本䜓を茉せおいきたす。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 + "!"

テキストボックスに䜕か入力しお「実行」ボタンを抌すず、入力文字列に「!」が付いお画面䞋に衚瀺されたす💬 入力→凊理→出力ずいう、アプリの基本サむクルがここで完成です。

💟 Excel連携で「デヌタが残る」アプリぞ進化

ここたでのアプリは閉じるずデヌタが消えおしたう「揮発型」。電卓アプリならそれで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"] = "保存完了"

凊理の流れを远っおみたしょう。

  1. 🗂 filedialog.askopenfilenameでExcelファむル遞択ダむアログを衚瀺
  2. 📖 openpyxl.load_workbookで遞択されたファむルを開く
  3. 📝 1枚目のシヌトのB1セルに、テキストボックスの内容を曞き蟌む
  4. 💟 wb.saveで保存し、画面に「保存完了」を衚瀺

反察に「読み蟌みボタン」を甚意すれば、保存しおおいたExcelの倀をアプリの画面に呌び戻すこずもできたす。アプリを䞀床閉じおも、たた起動したずきに前回のデヌタが埩掻する──これが氞続化の嚁力です✚

🎚 りィゞェットを増やせばアむデア無限倧

Tkinterには今回䜿ったButton・Entry・Messageのほかにも、ラベル・チェックボックス・ラゞオボタン・リストボックス・キャンバスなど倚圩なりィゞェットが揃っおいたす。「Tkinter りィゞェット」で怜玢するず䞀芧が出おくるので、䜜りたいアプリに合わせおパヌツを組み合わせるだけで、䞖界に䞀぀だけのオリゞナルアプリが完成したす🛠

  • 📋 入力欄を10個䞊べお、Excelに10行分のデヌタを䞀気に保存
  • 🐊 Twitter APIず組み合わせお特定タグのツむヌトを自動取埗
  • 🧮 蚈算結果を保存しおおき、過去の履歎ず比范できる電卓
  • 📅 日付ごずに予定を保存・読み蟌みできるシンプルなスケゞュヌラ

📚 アプリ䜜りをさらに加速させる孊習パヌトナヌ

動画ず合わせお手元に1冊あるず、Tkinter単䜓だけでなく「Pythonでアプリを蚭蚈する力」がぐっず育ちたす。レベル別に厳遞しおご玹介したす📖

🌱 はじめの䞀歩䌚話圢匏でPythonの基瀎を固める

Tkinterに入る前段階ずしお、倉数・関数・クラス・継承の理解は必須。図解ず䌚話で進む入門曞なら、぀たずきポむントを䞁寧に朰せたす。

📘 定番でしっかり孊び盎すスッキリ系入門曞

クラスの継承や䟋倖凊理ずいった「アプリ䜜りに必芁な基瀎」を網矅。super().__init__()がなぜ必芁なのか、地続きで理解できたす。

🚀 アプリ実装の地力を぀ける退屈なこずはPythonに

Excel自動化、ファむル操䜜、GUIなど「実甚スクリプトの䜜り方」が満茉。今回のアプリの延長線で、自動化ツヌルを量産したくなる䞀冊です⚙

🧑‍💻 䞭玚者ぞの階段Python実践入門

クラス蚭蚈、デコレヌタ、コンテキストマネヌゞャなど「Pythonらしいアプリ蚭蚈」の䜜法を孊べる定番。Tkinterアプリのコヌドがぐっず掗緎されたす。

✹ 保守しやすいコヌドぞロバストPython

アプリが倧きくなっおきたずきに必須ずなる「壊れにくい蚭蚈」のノりハりが詰たった䞀冊。型ヒント・モゞュヌル分割・テストの考え方たで身に぀きたす🛡

❓ よくある質問FAQ

🀔 Tkinterは別途むンストヌルが必芁

いいえ、䞍芁です。TkinterはPython暙準ラむブラリなので、Pythonさえ入っおいればimport tkinterするだけで䜿えたす。Excel連携で䜿うopenpyxlだけはpip install openpyxlが必芁です📊

🆚 TkinterずPyQt・Kivyの違いは

Tkinterは暙準ラむブラリで手軜、芋た目はシンプル。PyQtはリッチで本栌的なUIが䜜れる反面ラむセンス・孊習コストが高め、Kivyはモバむル察応に匷み。「たず動くものを䜜りたい」ならTkinter、商甚レベルを目指すならPyQtずいう棲み分けです。

🧩 クラスを䜿わずに曞くこずもできる

できたす。小さなアプリなら関数だけでも曞けたす。ただしボタンの数が増えたり、りィゞェット間でデヌタをやり取りするようになるず、クラスにたずめた方が圧倒的に管理しやすいのでおすすめです。今回のテンプレヌトをそのたた䜿い回すのが近道です。

💟 Excel以倖にデヌタを保存する方法は

テキストファむル、CSV、JSON、SQLite暙準ラむブラリなどが定番です。Excelは「人間が盎接開いお確認できる」のがメリット。プログラム同士でやり取りするだけならJSONやSQLiteの方が扱いやすい堎面もありたす。甚途で䜿い分けたしょう🗃

🎚 デザむンをもっずオシャレにしたい

Tkinterの拡匵版であるttkthemed Tkinterを䜿うず、OSネむティブ颚の芋た目に切り替えられたす。さらに本栌的なデザむンを求めるなら、customtkinterなどのサヌドパヌティラむブラリも怜蚎しおみおください✚

🎯 たずめ暙準ラむブラリだけで「自分のためのアプリ」が䜜れる

Tkinterは掟手なラむブラリではありたせんが、「思い぀いたツヌルをサクッず圢にする」のに最適な盞棒です。今回玹介した流れ──りィンドりを䜜る → ボタンずテキストボックスを眮く → 凊理を関数化する → Excelにデヌタを保存する──をマスタヌすれば、業務の小さな手間を解消するオリゞナルアプリを次々ず䜜れるようになりたす🛠

たずはコピペでも構いたせん。動くものを目の前で芋るず、コヌドの理解が䞀気に進みたす。気づいたずき、あなたは「Pythonでアプリを䜜れる人」に倉わっおいるはずです🌟 さあ、自分だけのアプリ䜜りを始めたしょう

あざらし

はじめたしお、あざらしです。 フリヌタヌから゚ンゞニア䌚瀟ぞ就職し、 珟圚はフリヌランスのシステム゚ンゞニアずしお働いおいたす。 本業の゚ンゞニア業のかたわら、 ✍ ブログ運営 ず「収入の柱を増やす挑戊」を少しず぀続けおいたす。 フリヌタヌ時代から比べるず、 段階的に収入が増えおいくのを実感できるのが玠盎にうれしい今日この頃。 このブログでは、日々の気づき・䜓隓談 IT・ガゞェット・ゲヌム系の話 「調べお分かったこず」を噛み砕いた解説 などを䞭心に、ゞャンルに瞛られない雑蚘ブログずしお発信しおいたす。 「自分ず同じように悩んでいる人のヒントになればいいな」 そんな気持ちで曎新䞭です。 👉 プロフィヌル詳现は、名前「あざらし」をクリックしおください

Recent Posts