用于单击Tkinter Treeview小部件项的命令?

时间:2010-09-25 14:53:05

标签: python user-interface treeview tkinter

我正在使用Tkinter创建GUI,GUI的主要部分是两个Treeview对象。当项目(即目录)点击两次时,我需要Treeview个对象的内容更改

如果Treeview项目是按钮,我只能将command设置为适当的功能。但是我找不到为Treeview项创建"on_click"行为的方法。

什么Treeview选项,方法等使我能够将命令绑定到特定项并执行该命令"on_click"

3 个答案:

答案 0 :(得分:25)

如果您想在用户双击时发生某些事情,请向"<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()

答案 1 :(得分:13)

选择多个元素且用户使用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()

答案 2 :(得分:0)

我知道这很旧,但是此代码还将在树状视图中打印多个选定的项目。

def on_double_click(self, event):
    item = self.tree.selection()
    for i in item:
        print("you clicked on", self.tree.item(i, "values")[0])