私はTkinterでGUIを作成していますが、GUIの大部分は2つのTreeviewオブジェクトです。アイテム(つまりディレクトリ)が2回クリックされたの場合、Treeview
オブジェクトの内容を変更にする必要があります。
Treeviewアイテムがボタンの場合、command
を適切な関数に設定することができます。しかし、Treeviewアイテムの"on_click"
動作を作成する方法を見つけるのに問題があります。
コマンドを特定のアイテムにバインドしてそのコマンドを実行できるTreeviewオプション、メソッドなどはどれですか"on_click"
?
ユーザーがダブルクリックしたときに何かが発生するようにしたい場合は、"<Double-1>"
にバインディングを追加します。シングルクリックで選択が設定されるため、コールバックでウィジェットにクエリを実行して、何が選択されているかを確認できます。例えば:
import tkinter as tk
from tkinter import ttk
class App:
def __init__(self):
self.root = tk.Tk()
self.tree = ttk.Treeview()
self.tree.pack()
for i in range(10):
self.tree.insert("", "end", text="Item %s" % i)
self.tree.bind("<Double-1>", self.OnDoubleClick)
self.root.mainloop()
def OnDoubleClick(self, event):
item = self.tree.selection()[0]
print("you clicked on", self.tree.item(item,"text"))
if __name__ == "__main__":
app = App()
複数の要素が選択され、ユーザーがSHIFT+CLICK
を使用すると(少なくともMacでは)、前の解決策は失敗します。
より良い解決策は次のとおりです。
import tkinter as tk
import tkinter.ttk as ttk
class App:
def __init__(self):
self.root = tk.Tk()
self.tree = ttk.Treeview()
self.tree.pack()
for i in range(10):
self.tree.insert("", "end", text="Item %s" % i)
self.tree.bind("<Double-1>", self.OnDoubleClick)
self.root.mainloop()
def OnDoubleClick(self, event):
item = self.tree.identify('item',event.x,event.y)
print("you clicked on", self.tree.item(item,"text"))
if __name__ == "__main__":
app = App()
私はこれが古いことを知っていますが、このコードはツリービューで複数の選択されたアイテムも印刷します。
def on_double_click(self, event):
item = self.tree.selection()
for i in item:
print("you clicked on", self.tree.item(i, "values")[0])