Tkinterでグリッド内にスクロール可能なリストボックスを作成する方法
Tkinterのリストボックス(Listbox)ウィジェットは、数値のリスト、商品リスト、会社の従業員名簿など、さまざまな項目を一覧表示するために使用されます。しかし、項目数が多い場合、ウィンドウ内にすべてを表示しきれず、一部の項目が画面外に隠れてしまうことがあります。
このような問題を解決するのがスクロールバー(Scrollbar)です。Scrollbar()オブジェクトを初期化して作成し、リストボックスに関連付けることで、長いリストでもスムーズに上下にスクロールして閲覧できるようになります。スクロールバーとリストボックスを正しく設定・接続すれば、リストボックスはスクロール可能な状態になります。
サンプルコード
以下の例では、1から100までの数値が格納されたリストボックスを作成します。このリストボックスには垂直方向のスクロールバーが関連付けられており、マウスホイールやスクロールバーの操作ですべての項目を確認できます。
# 必要なライブラリをインポート
from tkinter import *
from tkinter import ttk
# Tkinterフレームのインスタンスを作成
win = Tk()
# ウィンドウのサイズを設定
win.geometry("700x350")
# スクロールバーオブジェクトを作成
s = Scrollbar()
# 垂直方向のスクロールバーを作成
scrollbar = ttk.Scrollbar(win, orient='vertical')
scrollbar.pack(side=RIGHT, fill=BOTH)
# リストボックスウィジェットを追加
listbox = Listbox(win, width=350, font=('Helvetica 15 bold'))
listbox.pack(side=LEFT, fill=BOTH)
# リストボックスに値を追加
for values in range(1, 101):
listbox.insert(END, values)
# リストボックスにスクロールバーを関連付け
listbox.config(yscrollcommand=scrollbar.set)
# スクロールバーの動作を設定
scrollbar.config(command=listbox.yview)
win.mainloop()コードのポイント
- ttk.Scrollbar(win, orient='vertical'): 垂直方向のスクロールバーを作成し、ウィンドウの右側(side=RIGHT)に配置しています。
- yscrollcommand=scrollbar.set: リストボックスのスクロール位置の変化をスクロールバーに通知する設定です。
- command=listbox.yview: ユーザーがスクロールバーを操作した際に、リストボックスの表示範囲を連動させる設定です。
実行結果
上記のコードを実行すると、スクロール可能なリストボックスが表示されたウィンドウが出力されます。右側のスクロールバーをドラッグすることで、1から100までのすべての数値を自由に閲覧できます。

-
Python tkinterでボタンを作成する方法|標準tkinterとttkの違いも解説
PythonのGUIライブラリ「Tkinter」には、ウィンドウ上にボタンを作成するためのさまざまな方法が用意されています。この記事では、標準のtkinterモジュールを使ったボタンの作成方法と、テーマ機能を持つtkinter.ttkモジュールを使ったボタンの作成方法の2通りを、サンプルコードとともにわかりやすく解説します。 tkinterモジュールでボタンを作成する 以下のプログラムでは、まずウィンドウを作成し、続いてButtonクラスを使ってボタンを生成しています。tkinterモジュール全体をインポートしているため、作成されたボタンには従来型のスタイル(テーマ)が適用されます。 主なパラ
-
【Python】Tkinterで作るカラーゲーム – 30秒で文字の色を当てるGUIゲーム開発
GUIアプリケーションの開発において、Pythonの標準ライブラリ「Tkinter」は非常に人気が高く、初心者でも扱いやすいツールです。追加のインストール作業なしに使えるため、Tkinterを活用すればシンプルなGUIゲームでも手軽に開発できます。 この記事では、Tkinterを使った「カラーゲーム」の作り方を紹介します。このゲームでは、画面に表示される単語の文字色をプレイヤーが入力し、正解するたびにスコアが1点ずつ加算されます。制限時間は30秒で、使用される色は赤(Red)、青(Blue)、緑(Green)、ピンク(Pink)、黒(Black)、黄(Yellow)、オレンジ(Orange)、