TkinterのListboxで選択したアイテムのインデックスを取得する方法
TkinterのListboxウィジェットを使用すると、複数のアイテムからなるリストを簡単に作成できます。リストボックス内の各アイテムには、上から順に0から始まるインデックスが自動的に割り当てられます。
この記事では、リストボックス内で選択されたアイテムのインデックスを取得して表示する方法を解説します。curselection()メソッドで現在選択中のアイテムのインデックスを取得し、get()メソッドと組み合わせることで、選択されたアイテムの情報を確認できます。
実装例
# 必要なライブラリをインポート
from tkinter import *
# tkinterフレーム(ウィンドウ)のインスタンスを作成
win = Tk()
# ウィンドウのサイズを設定
win.geometry("700x350")
# Listboxウィジェットを作成
lb = Listbox(win, width=100, height=10, font=('Times 13'), selectbackground="black")
lb.pack()
# 選択されたアイテムのインデックスを取得して表示する関数を定義
def save():
for item in lb.curselection():
print("You have selected " + str(item + 1))
# Listboxにアイテムを追加
lb.insert("end", "A", "B", "C", "D", "E", "F")
# インデックスを取得するためのボタンを追加
Button(win, text="Save", command=save).pack()
win.mainloop()実行結果
上記のコードを実行すると、アルファベット(A〜F)のリストが表示されたウィンドウが現れます。
リストから任意のアイテムを選択し、「Save」ボタンをクリックすると、選択したアイテムのインデックスがコンソールに出力されます。
You have selected 3
コードのポイント
- curselection()メソッド:現在選択されているアイテムのインデックスをタプル形式で返します。何も選択されていない場合は空のタプルが返ります。
- インデックスは0始まり:Listboxのインデックスは0から始まるため、サンプルコードでは
item + 1とすることで、人間にとって直感的な「何番目か」を表示しています。 - get()メソッド:
lb.get(item)のように呼び出すことで、指定したインデックスのアイテムのテキストを取得できます。インデックスだけでなく、選択されたアイテムの内容自体を表示したい場合に便利です。
-
Tkinterでウィジェットの現在のX・Y座標を取得する方法
Tkinterは、PythonでGUIアプリケーションを開発するために広く利用されている標準ライブラリです。ボタン、テキストボックス、ラベルなど、さまざまなウィジェットが用意されており、これらを組み合わせることで直感的なユーザーインターフェースを構築できます。さらに、ウィジェットの配置位置や座標も、専用の関数やライブラリを使って柔軟にカスタマイズすることが可能です。ここでは、Tkinterフレーム上に配置したウィジェットの実際の座標を取得する方法を紹介します。ウィジェットの正確な座標を知りたい場合には、Tkinterライブラリが提供するgeometry(ジオメトリ)関連のメソッドを活用します。
-
Python Tkinterでルートウィンドウを非表示・破棄する2つの方法
Tkinterアプリケーションのテスト中に、デフォルトのウィンドウやフレームを一時的に隠したい、あるいは完全に閉じたいという場面に遭遇することがあります。Tkinterでは、withdraw()メソッドによる「非表示」と、destroy()メソッドによる「破棄」の2つのアプローチが用意されています。mainloop()とウィンドウのライフサイクルmainloop()は、外部イベントによってウィンドウが閉じられるまで、Tkinterアプリケーションを実行し続ける役割を担います。このメインループが動作している間、ウィンドウは画面上に表示され続けます。ウィンドウを完全に破棄(終了)したい場合は、de