views:

56

answers:

1

I'm creating a GUI with Tkinter, and a major part of the GUI is two Treeview objects. I need the contents of the Treeview objects to change when an item (i.e. a directory) is clicked twice.

If treeview items were buttons, I'd just be able to set command to the appropriate function. But I'm having trouble finding a way to create on-click behavior for Treeview items.

So, what Treeview option, method, etc. enables me to bind a command to particular items and execute that command on-click?

+1  A: 

If you want something to happen when the user double-clicks, add a binding to <Double-1>. Since a single click sets the selection, in your callback you can query the widget to find out what is selected. For example:

import Tkinter as tk
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()
Bryan Oakley