2010-09-25 149 views
9

我用Tkinter創建一個GUI,GUI的主要部分是兩個Treeview對象。當一個項目(即目錄)是點擊兩次時,我需要Treeview對象的內容到更改單擊Tkinter Treeview小部件的項目的命令?

如果Treeview項是按鈕,我只能將command設置爲適當的函數。但是我無法找到一種方法爲Treeview項目創建"on_click"行爲。

什麼Treeview選項,方法等,使我能夠將命令綁定到特定項目並執行該命令"on_click"

回答

16

如果您希望在用戶雙擊時發生某些情況,請將綁定添加到"<Double-1>"。由於一次單擊就會設置選擇,在回調中,您可以查詢小部件以找出所選內容。例如:如果選擇了多個元素,並且用戶使用SHIFT+CLICK(至少在Mac)

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() 
11

先前的溶液中失敗。

這裏是一個更好的解決方案:

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()