【Python】Tkinterリストボックスの使い方、

当サイトで紹介する商品・サービス等の外部リンクは、アフィリエイト広告を含む場合があります。
スポンサーリンク
本記事を読むと以下の実行ができます

Tkinterは、PythonでGUIアプリケーションを作成するための標準ライブラリで、
リストボックス(List box)は複数のデータをユーザーに表示し、選択させるための便利なウィジェットです。

本記事では、リストボックスの基本的な使い方から値の取得、削除、選択、スクロールバーの追加など応用までを詳しく解説していきます。

本記事は次の人におすすめ
  • Pythonで簡単なGUIアプリケーションを作りたい方
  • Tkinterのリストボックスを使ってデータを表示・操作したい方
  • ユーザー入力に応じて、表示項目を動的に変更したい方
  • スクロール可能なリストボックスを実装したい方
  • Tkinterウィジェットのデザインやオプションについて理解を深めたい方
スポンサーリンク

画面(ウィンドウ)の作成

リストボックスを表示するために画面(ウィンドウ)を作成します。

Tkinterでは、Tk()クラスを用いてメインウィンドウを作成し、
そのウィンドウの中にウィジェットを配置していきます。

import tkinter as tk

root = tk.Tk() 
root.title("リストボックス")  
root.geometry("200x150")  
root.mainloop()

リストボックスの作成

リストボックスは、Listboxクラスを使って作成します。

ユーザーが複数の項目から選択できるウィジェットで、
ファイル選択やオプションの選択画面などに幅広く使われます。

listbox = tk.Listbox(root, width=40, height=10)
listbox.pack()

リストボックスを作成し、ウィンドウに配置するためにpack()メソッドを呼び出しています。
その他にも、grid()メソッドやplace()メソッドなどがあります。

リストボックスは、次のような用途に適しています。

リストボックスの用途
  • 複数項目の選択肢を表示し、ユーザーに選択させる
  • ファイルやフォルダのリスト表示
  • 選択項目に応じた動的な操作の実行
  • データの整理やフィルタリング操作

値を取得、選択、削除

リストボックスから値を取得したり、項目を削除・選択することもできます。

#値の取得
selected_item = listbox.get(listbox.curselection())

#選択操作
listbox.select_set(0)  # 最初の項目を選択

#項目の削除
listbox.delete(0, tk.END)

リスト項目を用意して、これらをリストボックスに入れれば、追加できます。
また、項目を初期で選択しています。

import tkinter as tk

root = tk.Tk() 
root.title("リストボックス")  
root.geometry("200x150")  

listbox = tk.Listbox(root, width=40, height=10)
listbox.pack()

# リストボックスに項目を追加
items = ["Apple", "バナナ", "葡萄", "いちご"]
for item in items:
    listbox.insert(tk.END, item)

# 項目を選択
listbox.select_set(0)

root.mainloop()

スクロールバーの追加

リストボックスの項目が多い場合、
スクロールバーを追加することでユーザーが快適に操作できるようになります。

# リストボックスとスクロールバーの作成
listbox = tk.Listbox(root, width=40, height=10)
listbox.pack(side=tk.LEFT, fill=tk.BOTH)

scrollbar = tk.Scrollbar(root)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

# スクロールバーとリストボックスを連携
listbox.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=listbox.yview)

これにより、リストボックスに縦方向のスクロールバーが連動し、
リスト内の項目がスクロール可能になります。
リストボックスの枠が項目よりも多くなると、スクロールバーは解除されます。

オプション一覧(色・フォント・大きさ変更・デザインなど)

リストボックスもボタンやラベルのようにさまざまなオプションを設定できます。

例にしているオプション一覧
  • 背景色:bg=”lightblue”のように指定して、リストボックスの背景色を変更できます。
  • フォント:font=(“Arial”, 12)でフォントスタイルとサイズを指定可能です。
  • サイズ変更:widthやheightオプションを使ってリストボックスの大きさを自由に変更できます。
  • 選択項目の色:selectbackground、selectforegroundで、選択された項目の背景色を変更できます。
# リストボックスのオプション設定
listbox = tk.Listbox(root, width=40, height=10, bg="lightblue", font=("Arial", 12), selectbackground="yellow",selectforeground="red")
listbox.pack()

エントリーの文字列をリストに追加する

エントリーボックスにユーザーが文字を入力し、
ボタン、Enterキーを押すとリストボックスに追加していきます。

Tkinterのエントリーボックスの使い方を紹介します。
Tkinterのボタンの使い方を紹介します。

また、リストボックスにスクロールバーを追加して、リストをダブルクリックすると、
ラベルにリストの文字を追加します。

Tkinterのスライダーバーの使い方を紹介しています。
Tkinterのラベルの使い方を紹介しています。

ダブルクリックをするには、bindでイベントを追加する必要があります。

Tkinterでクリックイベントを付ける方法を紹介しています。

ソースコード

import tkinter as tk

# メインウィンドウの作成
root = tk.Tk()
root.title("リストボックス")

# エントリー(テキスト入力)の作成
entry = tk.Entry(root, width=40)
entry.pack(padx=10,pady=10)

# フレームを作成してリストボックスとスクロールバーをまとめる
frame = tk.Frame(root)
frame.pack(padx=10,pady=10)

# リストボックスの作成
listbox = tk.Listbox(frame, width=40, height=10)
listbox.pack(side=tk.LEFT)

# スクロールバーの作成
scrollbar = tk.Scrollbar(frame)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

# リストボックスとスクロールバーを連動させる
listbox.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=listbox.yview)

# エントリーの内容をリストボックスに追加する関数
def add_listbox(event = None): 
    item = entry.get()  
    if item: 
        listbox.insert(tk.END, item) 
        entry.delete(0, tk.END)
        
# リストボックスの項目を全て削除する関数
def reset_listbox():
    listbox.delete(0, tk.END)  # リストボックスの全項目を削除

# ボタン用のフレームを作成
button_frame = tk.Frame(root)
button_frame.pack(pady=10)

# 追加ボタンの作成
add_button = tk.Button(button_frame, text="追加", command=add_listbox)
add_button.grid(row=0, column=0, padx=5)

# リセットボタンの作成
reset_button = tk.Button(button_frame, text="リセット", command=reset_listbox)
reset_button.grid(row=0, column=1, padx=5)
# 項目を表示するラベルの作成
label = tk.Label(root, text="input text")
label.pack(padx=10,pady=10)

# リストボックスでダブルクリックした項目をラベルに表示する関数
def item(event):
    # ダブルクリックされた項目のインデックスを取得
    selected_index = listbox.curselection()
    if selected_index:
        # 選択された項目のテキストを取得してラベルに表示
        selected_item = listbox.get(selected_index)
        label.config(text=selected_item)

# リストボックスの項目をダブルクリックした際のイベントバインド
listbox.bind("<Double-Button-1>", item)

# エントリーでEnterキーが押された時に追加するようにバインド
entry.bind("<Return>", add_listbox)

# メインループの開始
root.mainloop()

Pythonの学習進め方

Pythonでできることは多岐に渡ります。

Pythonでできること
  • 機械学習・人工知能
  • データ解析・統計分析
  • ファイル操作・システム管理
  • GUIアプリ開発

Pythonは強力で柔軟なプログラミング言語ですが、常に情報がアップデートされるので、
新しいライブラリやフレームワークを独学で学び続けることは困難です。

Udemyは動画で目的に応じた講座を受講できるのでレベルを合わせて学習できます。
購入した講座は再生・停止・スキップなどが可能なオンデマンド形式なので、
専門的な内容を自分のペースで独学できます。

Udemyの特徴
  • プロのエンジニアによる講習が受けられる
  • 自分のペースで学習を進められる
  • オンデマンド形式だから何度でも視聴可能
  • 不満足なコースは視聴していても返金可能返金ポリシー

Pythonでデータサイエンスや人工知能、GUIを学びたい人はUdemy学習を取り入れましょう。
数多くある講座の中から特におすすめな講座を5つ紹介します。

ビックセール開催中(10月11日まで)
対象のコースが1500円から(最大95%OFF)

多彩な講座から自分に合った講座を探そう!

最大94%OFF

終了まで

時間

Pythonをインストールから環境設定、基本文法が学習できる。さらに、モジュールの使い方やファイル操作の他に暗号化、並列化、インフラ自動化、キューイングシステム、非同期処理についても学べます。

Pythonの基礎を押さえつつ、人口知能やニューラルネットワーク、機械学習を取り扱う。機械学習ライブラリで文字認識や株価分析などを行う。

データサイエンティストになるために必要なツールについて学ぶことができる。統計分析、NumpyやPandasなどを使ったPythonのプログラミング、機械学習の実装、ディープラーニングの実装を学習できる。

PythonでGUIを作成する方法を取り扱う。Tkinterの発展的な操作まで学習できる。翻訳アプリ、家計簿アプリ、電卓アプリ、音楽再生アプリなど作成して、exeファイル化する。

解説

  • フィールド(メンバ変数)

「root」:メインウィンドウを保持する変数。アプリケーションのウィンドウそのものを表しています。
「entry」:ユーザーが入力するテキストフィールドの変数。ユーザーが文字列を入力できる領域を提供します。
「frame」:リストボックスとスクロールバーをまとめて配置するためのフレーム。UI要素をグループ化するためのものです。
「listbox」:複数の項目を表示するリストボックス。ユーザーが複数の項目から選択することができる要素です。
「scrollbar」:リストボックスのスクロールを制御するためのスクロールバー。
「button_frame」:追加ボタンとリセットボタンをまとめて配置するフレーム。
「add_button」:エントリーに入力されたテキストをリストボックスに追加するボタン。
「reset_button」:リストボックスの全項目を削除するボタン。
「label」:リストボックスの項目を選択した時に、そのテキストを表示するためのラベル。

  • 関数・メソッド

add_listbox関数
この関数は、エントリーに入力された文字列を取得し、リストボックスに追加します。
入力が空白でない場合のみ、エントリーから文字列を取得し、
それをリストボックスの最後に追加します。

追加後、エントリーの内容をクリアします(空にします)。
イベント引数(event)は、Enterキーが押された際にも
この関数が呼び出されるように設定されています。

reset_listbox関数
この関数は、リストボックス内の全ての項目を削除します。
delete(0, tk.END)で、リストボックスの最初の項目から最後の項目まで全てを消去しています。

item関数
この関数は、リストボックス内でダブルクリックされた項目のテキストを取得、ラベルに表示します。

リストボックスの選択された項目のインデックスを取得し、
対応するテキストを取得してラベルの内容を変更します。

実演

Entryウィジェットを使用して、ユーザーがリストに追加する文字列を入力できるテキスト入力フィールドを設置します。

その後、ListboxとScrollbarを作成し、リストボックス内の項目が多くなった際にスクロールして項目を確認できるように設定します。

追加ボタンをクリックすると、入力されたテキストがリストボックスに追加され、リセットボタンを押すとリスト内の全項目が削除されます。

リストボックス内の項目をダブルクリックすると、その項目のテキストがラベルに表示される仕組みです。

まとめ

Tkinterのリストボックスを使うことで、
複数の項目を表示・選択するインターフェースを簡単に作成できます。

スクロールバーやボタンを使った追加・削除機能も加えることで、
ユーザーにとって使いやすいアプリケーションを開発可能です。

オプションを活用して、デザインや操作性を調整し、より高品質なGUIアプリを作成できます。

タイトルとURLをコピーしました