Python応用

【Python tkinter入門】デスクトップ電卓アプリの作り方|GUIアプリ開発チュートリアル

Udemy演習課題:tkinterで電卓アプリを作ろう

この記事は、PythonのtkinterライブラリでGUIデスクトップアプリを作る実践型チュートリアルです。Udemyで公開中のPythonコース「ゼロからはじめる独学プログラミング講座|Python × PyCharm開発環境構築」の演習課題としても活用できます。

今回は、2つの数字と演算子を入力して計算できるシンプルな電卓アプリをステップごとに一緒に作っていきます。tkinterを使ったGUIアプリ開発の基礎を、手を動かしながら自然に身につけられる構成になっています。

(解答解説の動画はUdemy本編をご覧ください。)


この課題のゴール:tkinterで電卓GUIアプリを完成させる

このチュートリアルでは、Python初心者がtkinterを使ってGUI(Graphical User Interface)アプリを作ることを目標にしています。

具体的には、以下の機能を持つシンプル電卓アプリを完成させます。

  • 2つの数値を入力できる入力欄(Entryウィジェット)
  • 演算子(+・-・×・÷)を選ぶドロップダウン(コンボボックス)
  • 計算を実行するボタン(Buttonウィジェット)
  • 計算結果を表示するラベル(Labelウィジェット)

プログラミングを始めたばかりの方でも、各ステップのコードと解説を読みながら進めれば理解が深まります。焦らずじっくり取り組んでみてください。

完成するとこのようなアプリになります。2つの入力ボックスに値を入れ、ドロップダウンから演算子を選択し、「計算する」ボタンをクリックすると結果が表示されます。

⚠️ 注意:Google Colabでは実行できません。ローカルのPython環境(PyCharm・VS Code・IDLE など)を使用してください。


【ステップ1】tkinterで基本ウィンドウを作る

まずは、GUIアプリの土台となるウィンドウの作成から始めましょう。tkinterを使ったデスクトップアプリでは、最初にこの「ウィンドウ(入れ物)」を用意することが必須です。

import tkinter as tk

root = tk.Tk()
root.title("電卓アプリ")
root.geometry("300x250")
root.configure(bg="white")

root.mainloop()

実行すると、何もないウィンドウが表示されます。各コードの役割は以下のとおりです。

コード役割
import tkinter as tktkinterライブラリをインポートする
tk.Tk()アプリのメインウィンドウ(本体)を作成する
title()ウィンドウ上部に表示されるタイトルを設定する
geometry()ウィンドウの幅と高さ(ピクセル)を指定する
configure()背景色などのウィンドウ設定を変更する
mainloop()ウィンドウを表示し、ユーザー操作を待機するループを開始する

tkinterでは、tk.Tk()で作った「ウィンドウ」という入れ物の中に、ボタンや入力欄などの部品(ウィジェット)を追加していくことでアプリを完成させていきます。


【ステップ2】tkinter Entryウィジェットで数値入力欄を作る

次に、ユーザーが数字を入力できる欄を2つ作ります。足し算や引き算で使う「左辺の数値」と「右辺の数値」を入力するためのフォームです。tkinterでは、テキスト入力欄をEntryウィジェットで作成します。

entry1 = tk.Entry(root, width=10)
entry1.pack()

entry2 = tk.Entry(root, width=10)
entry2.pack()

実行すると、入力フォームが2つ縦に並んで表示されます。各コードの役割は以下のとおりです。

  • Entry:ユーザーのキーボード入力を受け取るためのウィジェット
  • width=10:入力欄の横幅を文字数単位で指定する
  • pack():ウィンドウ内に部品を配置するメソッド(配置しないと画面に表示されない)

⚠️ tkinterではウィジェットを作成しただけでは画面に表示されません。pack()grid()place()のいずれかで配置の指示を行う必要があります。今回は縦に並べるだけなので、最もシンプルなpack()を使用しています。


【ステップ3】ttk.Comboboxで演算子選択ドロップダウンを作る

続いて、ユーザーが「どの計算をしたいか」を選べるように、演算子の選択メニュー(ドロップダウン)を用意します。tkinterでドロップダウン(コンボボックス)を使うには、tkinter.ttkモジュールのComboboxウィジェットを利用します。

from tkinter import ttk

operator_var = tk.StringVar()
operator_var.set("+")

operator_menu = ttk.Combobox(root, textvariable=operator_var, values=["+", "-", "*", "/"], width=5)
operator_menu.pack()

各コードの役割は以下のとおりです。

  • ttk.Combobox:ドロップダウン形式の選択メニューウィジェット
  • StringVar():ウィジェットの値をPythonの変数として管理するためのtkinter専用の変数オブジェクト
  • textvariable:ウィジェットの現在の値と連動させる変数を指定する
  • values:ドロップダウンに表示する選択肢のリストを指定する
  • set(“+”):初期値として「+」を設定する

StringVar()はtkinter特有の仕組みです。通常のPython変数ではウィジェットの値を動的に取得・更新できないため、tkinterが提供する専用の変数クラスを使います。


【ステップ4】計算ボタンと結果表示ラベルを追加する

いよいよ、計算を実行するボタン(Buttonウィジェット)と、計算結果を表示するラベル(Labelウィジェット)を追加します。

def calculate():
    try:
        num1 = float(entry1.get())
        num2 = float(entry2.get())
        op = operator_var.get()

        if op == "+":
            result = num1 + num2
        elif op == "-":
            result = num1 - num2
        elif op == "*":
            result = num1 * num2
        elif op == "/":
            if num2 == 0:
                result_label.config(text="エラー:0で割ることはできません")
                return
            result = num1 / num2
        else:
            result_label.config(text="無効な演算子です")
            return

        result_label.config(text=f"結果:{result}")
    except ValueError:
        result_label.config(text="エラー:数値を入力してください")

btn = tk.Button(root, text="計算する", command=calculate)
btn.pack()

result_label = tk.Label(root, text="結果がここに表示されます", bg="white")
result_label.pack()

各コードの役割は以下のとおりです。

  • def calculate():ボタンが押されたときに実行される関数。入力値を取得して計算し、結果をラベルに表示する
  • entry1.get() / entry2.get():Entryウィジェットに入力された値を文字列として取得する
  • float():取得した文字列を浮動小数点数(小数を含む数値)に変換する
  • operator_var.get():コンボボックスで選択中の演算子を取得する
  • tk.Button:クリック可能なボタンウィジェット。command引数に実行したい関数を指定する
  • tk.Label:テキストや画像を表示するウィジェット。config(text=...)で表示内容を動的に更新できる
  • try / except ValueError:数値以外が入力された場合のエラーを適切に処理する

ボタンのcommand引数には「関数の参照(関数名のみ)」を渡します。command=calculate()のように()をつけてしまうとボタン配置時に即実行されてしまうため注意してください。


【完成版】tkinter電卓アプリの全コード

ここまでのステップを1つにまとめた完成版の全コードです。そのままコピーして実行できます。

import tkinter as tk
from tkinter import ttk

# ウィンドウの作成
root = tk.Tk()
root.title("電卓アプリ")
root.geometry("300x250")
root.configure(bg="white")

# 数値入力欄
entry1 = tk.Entry(root, width=10)
entry1.pack(pady=5)

entry2 = tk.Entry(root, width=10)
entry2.pack(pady=5)

# 演算子ドロップダウン
operator_var = tk.StringVar()
operator_var.set("+")
operator_menu = ttk.Combobox(root, textvariable=operator_var, values=["+", "-", "*", "/"], width=5)
operator_menu.pack(pady=5)

# 計算関数
def calculate():
    try:
        num1 = float(entry1.get())
        num2 = float(entry2.get())
        op = operator_var.get()

        if op == "+":
            result = num1 + num2
        elif op == "-":
            result = num1 - num2
        elif op == "*":
            result = num1 * num2
        elif op == "/":
            if num2 == 0:
                result_label.config(text="エラー:0で割ることはできません")
                return
            result = num1 / num2
        else:
            result_label.config(text="無効な演算子です")
            return

        result_label.config(text=f"結果:{result}")
    except ValueError:
        result_label.config(text="エラー:数値を入力してください")

# 計算ボタン
btn = tk.Button(root, text="計算する", command=calculate)
btn.pack(pady=5)

# 結果表示ラベル
result_label = tk.Label(root, text="結果がここに表示されます", bg="white")
result_label.pack(pady=10)

root.mainloop()

tkinter GUIアプリ開発のまとめ

このチュートリアルでは、Pythonのtkinterライブラリを使って、以下のウィジェットの使い方を学びました。

ウィジェット用途
tk.Tk()メインウィンドウの作成
tk.Entryテキスト入力欄
ttk.Comboboxドロップダウン選択メニュー
tk.Buttonクリックボタン
tk.Labelテキスト・結果の表示
tk.StringVar()ウィジェットと連動する変数

tkinterはPythonに標準で付属しているため、追加インストール不要でGUIデスクトップアプリを作れる点が大きな魅力です。今回作った電卓アプリをベースに、デザインの変更や機能追加(履歴表示・キーボード入力対応など)にもぜひ挑戦してみてください。

Udemyコースの詳細・解答解説動画はコース本編をご確認ください。Pythonの基礎からGUIアプリ開発まで、ステップごとに丁寧に解説しています。


関連記事

Pythonの基礎や開発環境構築に関する記事もあわせてご覧ください。tkinterをさらに活用したGUIアプリ開発の応用チュートリアルも順次公開予定です。

📚 関連記事

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る
徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

もしも

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

電子工作とプログラミングを同時に学べる

Amazonで見る
実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です