Tkinterのリストボックスで選択した複数の項目を一括削除する方法
はじめに
TkinterのListboxウィジェットでリストボックスを作成した際、ユーザーが選択した複数の項目をまとめて削除したいケースはよくあります。本記事では、その実装方法をサンプルコードとともにわかりやすく解説します。
複数選択を有効にするには
デフォルト設定のリストボックスでは、1つの項目しか選択できません。複数の項目を選択できるようにするには、selectmodeオプションにMULTIPLEを指定します。
削除処理のポイントは、curselection()メソッドで現在選択されている項目のインデックスを取得し、後ろのインデックスから順番にdelete()メソッドを呼び出すことです。先頭から削除するとインデックスがずれてしまい、意図しない項目が削除される恐れがあるためです。
サンプルコード
#必要なライブラリをインポート
from tkinter import *
#tkinterフレーム(ウィンドウ)のインスタンスを作成
win = Tk()
#ウィンドウサイズを設定
win.geometry("700x400")
#テキストラベルを作成
label = Label(win, text="Select items from the list", font=('Poppins bold', 18))
label.pack(pady=20)
#選択項目を削除する関数を定義
def delete_item():
selected_item = my_list.curselection()
for item in selected_item[::-1]:
my_list.delete(item)
#複数選択モードのリストボックスを作成
my_list = Listbox(win, selectmode=MULTIPLE)
my_list.pack()
items = ['C++', 'java', 'Python', 'Rust', 'Ruby', 'Machine Learning']
#リストを反復処理してリストボックスに項目を挿入
for item in items:
my_list.insert(END, item)
#選択した項目を削除するボタンを作成
Button(win, text="Delete", command=delete_item).pack()
#ウィンドウを表示し続ける
win.mainloop()
実行結果
上記のコードを実行すると、次のような画面が表示されます。

この状態で、リストボックス内の複数の項目を選択し、「Delete」ボタンをクリックすると、選択した項目がすべてリストから削除されます。

ご覧のとおり、「Delete」ボタンを一度クリックするだけで、選択していた3つの項目をまとめて削除できました。
ポイントまとめ
selectmode=MULTIPLEを指定すると、リストボックスで複数選択が可能になるcurselection()で選択中の項目のインデックスを取得できる- インデックスのずれを防ぐため、スライス
[::-1]を使って後ろから順に削除するのが安全
-
Tkinterで楕円の輪郭線を削除する方法
Tkinterのキャンバス(Canvas)ウィジェットを使うと、2D・3Dアプリケーション向けの図形描画はもちろん、画像の作成やアニメーションの描画など、さまざまなグラフィック表現が可能になります。ここでは、キャンバス上に楕円を美しく描く方法を紹介します。図形を見栄えよくするための機能はいくつかありますが、そのひとつとして「輪郭線の制御」があります。もし楕円などの図形からアウトライン(外枠の線)を取り除きたい場合は、create_oval() メソッドの outline プロパティに空の値(空文字列)を指定するだけで実現できます。サンプルコード# tkinterライブラリをインポート from
-
Netflixの「続きを見る」から作品を削除する方法を徹底解説
Netflixとは? Netflixは、世界中で愛用されている定額制動画配信サービスです。インターネットに接続されたデバイスがあれば、テレビ番組、映画、ドキュメンタリーなど幅広いジャンルのコンテンツをいつでも楽しめます。広告なしでコンテンツを無制限に視聴できる点も大きな魅力です。月額料金は発生しますが、提供されるサービスの質を考えれば十分に見合う価格といえるでしょう。契約は月ごとのサブスクリプション形式で、登録・支払いを行った日から開始され、縛りのある契約期間や解約金も一切ありません。 「続きを見る」機能の便利さと悩みどころ Netflixはサービスそのものだけでなく、スマートフォンアプリや