Python Tkinterでボタンと入力フォームを作ろう!初心者向けGUI入門
生徒
「先生、Pythonで画面にボタンや文字を入力する場所を作りたいんですけど、どうすればいいですか?」
先生
「PythonにはTkinterという標準ライブラリがあります。これを使うと、ボタンや入力フォーム(テキストボックス)を簡単に作れます。」
生徒
「標準ライブラリって何ですか?」
先生
「Pythonをインストールすると最初から使える便利な部品の集まりのことです。追加で何かインストールしなくても使えますよ。」
1. Tkinterを使う準備
まずはPythonでTkinterを使えるようにする準備です。Tkinterは標準でインストールされているので、インポートするだけでOKです。
import tkinter as tk # ウィンドウを作成 root = tk.Tk() root.title("Tkinter入門") # ウィンドウのタイトル root.geometry("300x200") # ウィンドウサイズ root.mainloop()
上のコードを実行すると、シンプルなウィンドウが表示されます。root.mainloop()はウィンドウを表示し続けるために必要な命令です。
2. ボタンを作ってクリックできるようにする
次に、クリックできるボタンを作ります。ボタンを押したときに動く処理も簡単に書けます。
import tkinter as tk
def button_clicked():
print("ボタンが押されました!")
root = tk.Tk()
root.title("ボタンの例")
root.geometry("300x200")
ボタンを作成
button = tk.Button(root, text="押してね", command=button_clicked)
button.pack(pady=20) # packで配置、余白も追加
root.mainloop()
ポイントはcommand=button_clickedです。ボタンが押されたときにbutton_clicked関数が呼ばれます。
3. 入力フォーム(エントリー)を作る
入力フォームはEntryウィジェットを使います。ユーザーが文字を入力できるボックスです。
import tkinter as tk
def show_text():
user_input = entry.get() # 入力された文字を取得
print("入力された文字:", user_input)
root = tk.Tk()
root.title("入力フォームの例")
root.geometry("300x200")
entry = tk.Entry(root)
entry.pack(pady=10)
button = tk.Button(root, text="表示", command=show_text)
button.pack(pady=10)
root.mainloop()
entry.get()でユーザーが入力した文字を取得できます。
4. ラベルを使って画面に文字を表示する
画面上に文字を表示したいときはLabelを使います。ボタンや入力フォームと組み合わせると便利です。
import tkinter as tk
def update_label():
text = entry.get()
label.config(text="入力内容: " + text)
root = tk.Tk()
root.title("ラベル表示")
root.geometry("300x200")
entry = tk.Entry(root)
entry.pack(pady=10)
button = tk.Button(root, text="更新", command=update_label)
button.pack(pady=10)
label = tk.Label(root, text="ここに表示されます")
label.pack(pady=10)
root.mainloop()
label.config(text="新しい文字")で表示内容を変えられます。
5. ボタンと入力フォームを組み合わせた簡単なアプリ
ここまで学んだことを組み合わせて、入力した名前を挨拶として表示するアプリを作ってみます。
import tkinter as tk
def greet():
name = name_entry.get()
greeting_label.config(text=f"こんにちは、{name}さん!")
root = tk.Tk()
root.title("挨拶アプリ")
root.geometry("350x200")
tk.Label(root, text="名前を入力してください").pack(pady=5)
name_entry = tk.Entry(root)
name_entry.pack(pady=5)
tk.Button(root, text="挨拶する", command=greet).pack(pady=10)
greeting_label = tk.Label(root, text="")
greeting_label.pack(pady=10)
root.mainloop()
入力してボタンを押すと、ラベルに「こんにちは、〇〇さん!」と表示されます。
6. ウィジェットの配置を工夫しよう(pack以外も)
ここまでの例ではpack()を使いましたが、grid()を使うと表のように整列できます。
import tkinter as tk
root = tk.Tk()
root.title("grid配置の例")
root.geometry("300x150")
tk.Label(root, text="名前").grid(row=0, column=0, padx=5, pady=5)
tk.Entry(root).grid(row=0, column=1, padx=5, pady=5)
tk.Label(root, text="年齢").grid(row=1, column=0, padx=5, pady=5)
tk.Entry(root).grid(row=1, column=1, padx=5, pady=5)
tk.Button(root, text="送信").grid(row=2, column=0, columnspan=2, pady=10)
root.mainloop()
このように行と列を指定すると、より整理された画面を作れます。
7. 入力チェックや簡単な動作確認
入力フォームには数字だけを入れたい、必須入力にしたい、などのチェックも簡単にできます。例えば数字だけの入力チェックです。
import tkinter as tk from tkinter import messagebox
def check_input():
value = entry.get()
if value.isdigit():
messagebox.showinfo("確認", f"入力は {value} です")
else:
messagebox.showwarning("警告", "数字を入力してください")
root = tk.Tk()
root.title("入力チェック")
root.geometry("300x150")
entry = tk.Entry(root)
entry.pack(pady=10)
tk.Button(root, text="確認", command=check_input).pack(pady=10)
root.mainloop()
isdigit()で文字列が数字かどうかを判定しています。
8. 最後に:TkinterでGUIアプリを作るコツ
Tkinterは標準で使えるので、まずは小さなウィンドウやボタンから始めるのがポイントです。ラベル、ボタン、入力フォームを少しずつ組み合わせることで、シンプルでわかりやすいGUIアプリを作ることができます。
初めは画面に「ボタン」と「入力フォーム」を置き、クリックや入力の動作を確認するだけでも十分学習になります。慣れてきたらgrid()やpack()でレイアウトを工夫して、より見やすい画面に挑戦しましょう。
まとめ
今回の記事では、Pythonの標準ライブラリであるTkinterを使って、初心者でも簡単にGUIアプリケーションを作る方法を学びました。まず、Tkinterをインポートしてウィンドウを作成する基本から始め、次にボタンの作成とクリック時の処理、入力フォーム(Entry)の使い方、ラベル(Label)を用いた画面表示、そしてそれらを組み合わせた簡単な挨拶アプリまでステップごとに学習しました。
ボタンにcommandを設定してクリック時の動作を制御したり、entry.get()でユーザーの入力を取得する方法を理解することで、ユーザーとのインタラクションが可能になります。また、label.config(text="")を使うことで、画面上の文字表示を動的に変えることができ、より柔軟なGUIアプリケーションを作成できることも確認しました。
ウィジェットの配置方法も、pack()だけでなくgrid()を使うことで行と列を意識した整理されたレイアウトが実現でき、見やすく使いやすいアプリケーションの作成に役立ちます。さらに、数字だけの入力チェックや必須入力などの簡単な入力確認を追加することで、ユーザー入力の安全性や正確性を確保する方法も学びました。
まとめると、Tkinterを使うことでPython初心者でも短時間で、ボタンや入力フォーム、ラベルなどの基本ウィジェットを組み合わせたGUIアプリを作成できることがわかります。小さなウィンドウから始め、動作を確認しながら少しずつレイアウトや機能を拡張していくことが、GUIプログラミングを効率よく学ぶコツです。実際のアプリケーション開発では、今回学んだ基本を応用して、複数の入力フォームやボタンを組み合わせた実用的なツールも作成可能です。
import tkinter as tk
from tkinter import messagebox
def greet():
name = name_entry.get()
if name:
greeting_label.config(text=f"こんにちは、{name}さん!")
else:
messagebox.showwarning("入力確認", "名前を入力してください")
root = tk.Tk()
root.title("復習用挨拶アプリ")
root.geometry("350x200")
tk.Label(root, text="名前を入力してください").pack(pady=5)
name_entry = tk.Entry(root)
name_entry.pack(pady=5)
tk.Button(root, text="挨拶する", command=greet).pack(pady=10)
greeting_label = tk.Label(root, text="")
greeting_label.pack(pady=10)
root.mainloop()
生徒
「先生、今回はTkinterでボタンや入力フォーム、ラベルを使ったアプリを作りましたが、どんな順番で学ぶと効率的ですか?」p>
先生
「まずはウィンドウを表示する基本から始め、次にボタンを作ってクリック時の動作を確認します。その後、入力フォームやラベルを組み合わせて小さなアプリを作ると理解が深まります。」
生徒
「ボタンに関数を割り当てたり、入力内容を取得する方法が特に大事ですね。」
先生
「そうです。さらに、pack()やgrid()でウィジェットを配置して、見やすい画面作りも重要です。入力チェックも取り入れると、より実用的なアプリになります。」
生徒
「わかりました!まずは小さなアプリから始めて、少しずつ機能を増やしていきます。」