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

Tkinter Treeviewでマウス操作により複数の行を正しく選択する方法

Tkinter Treeviewウィジェットとは

TkinterのTreeviewウィジェットは、アプリケーションで後から計算や編集を行えるデータをユーザーに提供するためのウィジェットです。Treeviewウィジェットを使うと、指定したデータを表形式で表示できます。列の追加・挿入や、行へのデータ登録なども自由に行えます。

実際のアプリケーションでは、複数の行を同時に選択したいケースがよくあります。Tkinterでは、Ctrlキーを押しながらマウスで行をクリックすることで、複数行を選択できます。また、Shiftキーを使えば、クリックした2つの行の間にある範囲をまとめて選択することも可能です。

なお、Treeviewウィジェットのselectmodeオプションはデフォルトで"extended"に設定されており、この設定によりCtrlキーやShiftキーを使った複数選択が有効になっています。明示的に指定する場合は、以下のように記述します。

tree = ttk.Treeview(win, column=("c1", "c2", "c3"), show='headings', height=5, selectmode="extended")

サンプルコード

# 必要なライブラリをインポート
from tkinter import *
from tkinter import ttk

# tkinterフレームのインスタンスを作成
win = Tk()

# ウィンドウサイズを設定
win.geometry("700x350")
s = ttk.Style()
s.theme_use('clam')

# Treeviewウィジェットを作成
tree = ttk.Treeview(win, column=("c1", "c2", "c3"), show='headings', height=5)
tree.column("#1", anchor=CENTER)
tree.heading("#1", text="ID")
tree.column("#2", anchor=CENTER)
tree.heading("#2", text="FName")
tree.column("#3", anchor=CENTER)
tree.heading("#3", text="LName")

# Treeviewウィジェットにデータを挿入
tree.insert('', 'end', text="1", values=('1', 'Joe', 'Nash'))
tree.insert('', 'end', text="2", values=('2', 'Emily', 'Mackmohan'))
tree.insert('', 'end', text="3", values=('3', 'Estilla', 'Roffe'))
tree.insert('', 'end', text="4", values=('4', 'Percy', 'Andrews'))
tree.insert('', 'end', text="5", values=('5', 'Stephan', 'Heyward'))

tree.pack()

win.mainloop()

実行結果

上記のコードを実行すると、複数のエントリ(レコード)を含む表が画面に表示されます。

Tkinter Treeviewでマウス操作により複数の行を正しく選択する方法

この状態でCtrlキーを押しながら表内の行を順番にクリックすると、離れた複数の行を同時に選択できます。選択された行はハイライト表示され、tree.selection()メソッドを使えば、選択中のアイテムIDを取得して後続の処理に活用できます。

  1. Tkinterでツリービュー(Treeview)の全アイテムを一括削除・クリアする方法

    TkinterのTreeviewウィジェットとはTkinterのTreeviewウィジェットは、階層構造を持つ項目をリスト形式で表示するためのコンポーネントです。見た目や操作性は、WindowsやmacOSに搭載されているファイルエクスプローラーに似ています。Treeviewウィジェットを使って作成した項目リストをすべて削除したい場合には、delete()関数を使用します。この関数は、get_children()メソッドで取得した各アイテムを反復処理しながら呼び出すことで、ツリー内のすべての要素を一括して消去できます。サンプルコード:プログラミング言語のTreeviewを作成する以下の例では、

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

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