【Python】tkinterのTreeviewで複数選択を無効にする方法
Treeviewウィジェットは、複数の列を持つ表形式で項目の一覧を表示するために使用されるウィジェットです。デフォルトでは、Treeview内の項目は複数同時に選択できるようになっていますが、コンストラクタでselectmode="browse"を指定することで、この複数選択機能を無効にできます。Treeviewウィジェットは、Treeview(root, column, **options)というコンストラクタを使用して実装します。
selectmodeオプションの種類
Treeviewの選択モード(selectmode)には、主に以下の3種類があります。
- extended(デフォルト): CtrlキーやShiftキーを組み合わせて複数の項目を選択可能
- browse: 一度に選択できるのは1つの項目のみ
- none: 項目の選択自体を許可しない
複数選択を無効にしたい場合は、「browse」を指定します。
サンプルコード
次の例では、Treeviewウィジェットで複数選択を無効にする方法を示しています。
# 必要なライブラリをインポート
from tkinter import *
from tkinter import ttk
# tkinterフレームのインスタンスを作成
win = Tk()
# ウィンドウのサイズを設定
win.geometry("700x300")
# Styleウィジェットのインスタンスを作成
style = ttk.Style()
style.theme_use('clam')
# Treeviewウィジェットを追加し、選択モードを設定
# selectmode="browse" で単一選択に制限
tree = ttk.Treeview(win, column=("c1", "c2"), show='headings', height=8, selectmode="browse")
tree.column("#1", anchor=CENTER, stretch=NO)
tree.heading("#1", text="名")
tree.column("#2", anchor=CENTER, stretch=NO)
tree.heading("#2", text="姓")
# Treeviewウィジェットにデータを挿入
tree.insert('', 'end', text="1", values=('Alex', 'M'))
tree.insert('', 'end', text="2", values=('Belinda', 'Cross'))
tree.insert('', 'end', text="3", values=('Ravi', 'Malviya'))
tree.insert('', 'end', text="4", values=('Suresh', 'Rao'))
tree.insert('', 'end', text="5", values=('Amit', 'Fernandiz'))
tree.insert('', 'end', text="6", values=('Raghu', 'Sharma'))
tree.insert('', 'end', text="7", values=('David', 'Nash'))
tree.insert('', 'end', text="8", values=('Ethan', 'Plum'))
tree.pack()
win.mainloop()
実行結果
上記のコードを実行すると、項目一覧が表示されたTreeviewウィジェットが画面に出力されます。リストから一度に選択できるのは1つの項目だけで、CtrlキーやShiftキーを押しながらクリックしても、複数の項目が同時に選択されることはありません。
このように、selectmode="browse"を指定するだけで簡単に単一選択モードへ切り替えられるため、ユーザーに必ず1つの項目だけを選ばせたいフォームや設定画面などに活用できます。
-
TkinterのCanvas(キャンバス)をクリアする方法を解説
Tkinterでは、ウィンドウ内にキャンバス(Canvas)を追加できます。キャンバスを作成すると、メモリ内部に描画データのためのストレージが確保されます。そのため、不要になったキャンバスの内容は、適切にクリアまたは削除してあげる必要があります。キャンバスをクリアするには、delete()メソッドを使用します。引数に「all」を指定することで、Tkinterフレーム上に存在するすべてのキャンバスアイテムを一括で削除し、画面をまっさらな状態に戻すことができます。サンプルコード# tkinterライブラリをインポート from tkinter import * # tkinterフレームのインス
-
tkinterでウィンドウを閉じる方法|destroy()メソッドの使い方を解説
tkinterを使えば、Pythonで手軽にGUIアプリケーションを作成できます。しかし、タイトルバー右上の×ボタン以外の方法でウィンドウやフレームを閉じたい場合、どのように実装すればよいか悩むこともあるでしょう。そのようなときに役立つのが、ウィンドウを破棄して閉じるための .destroy() メソッドです。tkinterの各ウィジェットや属性は互いに独立しているため、「ウィンドウを閉じる処理」を専用の関数として分離して定義できます。これにより、ボタンのクリックイベントからウィンドウを閉じる動作を自由に制御可能です。サンプルコード# ライブラリをインポート from tkinter impo