Python
 Computer >> コンピューター >  >> プログラミング >> Python

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()

実行結果

上記のコードを実行すると、次のような画面が表示されます。

Tkinterのリストボックスで選択した複数の項目を一括削除する方法

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

Tkinterのリストボックスで選択した複数の項目を一括削除する方法

ご覧のとおり、「Delete」ボタンを一度クリックするだけで、選択していた3つの項目をまとめて削除できました。

ポイントまとめ

  • selectmode=MULTIPLEを指定すると、リストボックスで複数選択が可能になる
  • curselection()で選択中の項目のインデックスを取得できる
  • インデックスのずれを防ぐため、スライス[::-1]を使って後ろから順に削除するのが安全
  1. Tkinterで楕円の輪郭線を削除する方法

    Tkinterのキャンバス(Canvas)ウィジェットを使うと、2D・3Dアプリケーション向けの図形描画はもちろん、画像の作成やアニメーションの描画など、さまざまなグラフィック表現が可能になります。ここでは、キャンバス上に楕円を美しく描く方法を紹介します。図形を見栄えよくするための機能はいくつかありますが、そのひとつとして「輪郭線の制御」があります。もし楕円などの図形からアウトライン(外枠の線)を取り除きたい場合は、create_oval() メソッドの outline プロパティに空の値(空文字列)を指定するだけで実現できます。サンプルコード# tkinterライブラリをインポート from

  2. Netflixの「続きを見る」から作品を削除する方法を徹底解説

    Netflixとは? Netflixは、世界中で愛用されている定額制動画配信サービスです。インターネットに接続されたデバイスがあれば、テレビ番組、映画、ドキュメンタリーなど幅広いジャンルのコンテンツをいつでも楽しめます。広告なしでコンテンツを無制限に視聴できる点も大きな魅力です。月額料金は発生しますが、提供されるサービスの質を考えれば十分に見合う価格といえるでしょう。契約は月ごとのサブスクリプション形式で、登録・支払いを行った日から開始され、縛りのある契約期間や解約金も一切ありません。 「続きを見る」機能の便利さと悩みどころ Netflixはサービスそのものだけでなく、スマートフォンアプリや