Tkinterでボタンを動的に生成・配置する方法をわかりやすく解説
Tkinterを使ったGUIアプリケーション開発では、ボタンを1つずつ手作業で作成するのではなく、ループ処理によって動的に生成すると、コードがすっきりし、保守性も向上します。
この記事では、Tkinterウィンドウ内にボタンを動的に作成する方法を、実際のコード例とともに詳しく解説します。ボタンを動的に生成するとは、イベント(command)を追加しながら、ボタンの表示内容や機能を柔軟にカスタマイズすることを指します。
基本的な流れ
まず、ノートブックやスクリプト内でtkinterライブラリをインポートします。次にButton関数を使ってインスタンスを作成します。Button関数には、主に以下のようなパラメータを指定します。
- parent(親ウィジェット):ボタンを配置するウィンドウやフレームの親要素
- textvariable:各ボタンに割り当てる値(テキスト変数)
- command:ボタンがクリックされたときに実行される関数やイベント
構文
Button(parent, textvariable, command)
サンプルコード
以下の例では、forループを使って10個のボタンを連続して生成し、グリッドレイアウトで順番に配置しています。
from tkinter import *
import tkinter as tk
# tkinterのインスタンスを作成
win = tk.Tk()
# ウィンドウサイズを指定
win.geometry("700x200")
# ウィンドウのタイトルを設定
win.title("www.tutorialspoint.com")
# 作成するボタンの数
n = 10
# 配置開始位置(行)を定義
i = 3
# n回繰り返し処理を行い、
# ボタンを動的に生成して配置
for j in range(n):
mybutton = Button(win, text=j)
mybutton.grid(row=i, column=j)
# ウィンドウを開いたままにする
win.mainloop()実行結果
上記のコードを実行すると、ウィンドウ内に「0」から「9」までの番号が付いた10個のボタンが、横一列に自動的に並んで表示されます。

ポイントまとめ
- forループとrange()を組み合わせることで、任意の個数のボタンを簡単に生成できます。
- grid()メソッドのrowとcolumnを制御することで、ボタンを格子状に整然と配置できます。
- 各ボタンにcommand引数でイベントを渡せば、クリック時の動作も個別にカスタマイズ可能です。
この手法は、電卓アプリや選択肢が多いメニュー画面など、多数の類似ボタンが必要なGUIを効率的に構築したい場合に特に役立ちます。
-
tkinterでウィンドウを閉じる方法|destroy()メソッドの使い方を解説
tkinterを使えば、Pythonで手軽にGUIアプリケーションを作成できます。しかし、タイトルバー右上の×ボタン以外の方法でウィンドウやフレームを閉じたい場合、どのように実装すればよいか悩むこともあるでしょう。そのようなときに役立つのが、ウィンドウを破棄して閉じるための .destroy() メソッドです。tkinterの各ウィジェットや属性は互いに独立しているため、「ウィンドウを閉じる処理」を専用の関数として分離して定義できます。これにより、ボタンのクリックイベントからウィンドウを閉じる動作を自由に制御可能です。サンプルコード# ライブラリをインポート from tkinter impo
-
Tkinterでウィンドウサイズの変更に合わせてボタンを動的にリサイズする方法
Pythonには、GUIアプリケーションを作成・開発するための豊富なライブラリが数多く用意されています。その中でもTkinterは、GUIベースのアプリケーション開発で最も広く使われているPython標準ライブラリの一つです。ウィジェットの追加をはじめ、アプリケーション構築に必要なさまざまな機能や属性を備えています。ボタンは、特定のタスクやイベントに割り当てることができるウィジェットです。しかし、ボタンのサイズや位置をウィンドウに合わせて動的に変更したい場合は、TkinterのGridモジュールを使ってレイアウトを設定します。ボタンを動的にリサイズするには、rowconfigure()メソッド