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

【Python】2つのTkinterリストボックスで同時に選択状態を維持する方法

特定のシステムで、ディレクトリから複数のファイルを選択し続け、クリップボードにコピーした後、別のディレクトリへ貼り付ける——そんな処理を実装したい場面を考えてみましょう。TkinterのListboxウィジェットでこのような「複数選択の維持」を実現するには、exportselectionプロパティを使用します。

exportselectionプロパティとは?

exportselectionは、リストボックス内の選択状態を他のウィジェットやアプリケーションと共有するかどうかを制御するプロパティです。デフォルト値はTrueになっており、この状態では別のリストボックスやウィジェットで項目を選択した瞬間に、それまでの選択が解除されてしまいます。

そこでexportselection=Falseを指定することで、選択状態が他のウィジェットに奪われなくなり、複数のリストボックスそれぞれで独立して選択を保持できるようになります。

サンプルコード

# Tkinterライブラリをインポート
from tkinter import *

# Tkinterフレーム(ウィンドウ)のインスタンスを作成
win = Tk()

# ウィンドウのサイズを設定
win.geometry("750x350")

# リストボックスAを作成(exportselection=Falseで選択を維持)
listboxA = Listbox(win, exportselection=False)
listboxA.pack(padx=10, pady=10, fill=BOTH, expand=True)

# リストボックスBを作成(こちらもexportselection=False)
listboxB = Listbox(win, exportselection=False)
listboxB.pack(padx=10, pady=10, fill=BOTH, expand=True)

# リストボックスAに項目を挿入
listboxA.insert(1, "1.Python")
listboxA.insert(2, "2.Java")
listboxA.insert(3, "3.C++")
listboxA.insert(4, "4.Rust")
listboxA.insert(5, "5.GoLang")

# リストボックスBに項目を挿入
listboxB.insert(1, "a.C#")
listboxB.insert(2, "b.JavaScript")
listboxB.insert(3, "c.R")
listboxB.insert(4, "d.Php")
listboxB.insert(5, "e.CoffeeScript")
listboxB.insert(6, "f.Curl")

# イベントループを開始
win.mainloop()

実行結果

上記のコードを実行すると、2つのリストボックスが並んで表示されたウィンドウが起動します。片方のリストボックスで項目を選択した後、もう片方のリストボックスでも項目を選択できますが、先ほどの選択状態は解除されずにそのまま維持されます。

【Python】2つのTkinterリストボックスで同時に選択状態を維持する方法

まとめ

複数のListboxを扱うGUIアプリケーションでは、デフォルトの挙動だと選択が競合してしまうため注意が必要です。exportselection=Falseを各リストボックスに設定するだけで、選択状態を独立して保持できるようになり、ファイル管理ツールなどで複数ディレクトリ間の操作を行う際に非常に便利です。

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

    はじめに TkinterのListboxウィジェットでリストボックスを作成した際、ユーザーが選択した複数の項目をまとめて削除したいケースはよくあります。本記事では、その実装方法をサンプルコードとともにわかりやすく解説します。 複数選択を有効にするには デフォルト設定のリストボックスでは、1つの項目しか選択できません。複数の項目を選択できるようにするには、selectmodeオプションにMULTIPLEを指定します。 削除処理のポイントは、curselection()メソッドで現在選択されている項目のインデックスを取得し、後ろのインデックスから順番にdelete()メソッドを呼び出すことです。

  2. PCで2つのWi-Fiネットワークに同時接続する方法【初心者向け完全ガイド】

    インターネットへの接続は、現代の電子機器が持つ最も便利な機能の一つです。この技術のおかげで、私たちは常に他者とつながり、あらゆる情報を数秒で入手できるようになりました。 インターネットがなければ生活ははるかに不便になるでしょう。多くの企業や機関がその運営をこの媒体に依存しているからです。だからこそ、良好な信号環境を維持することは、現代人にとって不可欠なサービスを快適に楽しむために非常に重要です。そのためにも、Windowsでネットワーク接続の詳細なレポートを作成・管理できることが大切です。 常にインターネットへアクセスできる状態を確保する有効な方法が、2つのWi-Fiネットワークへの同時接続で