2010-09-25 30 views
9

Tôi đang tạo GUI với Tkinter và một phần chính của GUI là hai đối tượng Treeview. Tôi cần nội dung của các đối tượng Treeview để thay đổi khi một mục (ví dụ: một thư mục) là được nhấp hai lần.Lệnh để nhấp vào các mục của tiện ích con Tullynter Treeview?

Nếu các mục trong Chế độ xem là các nút, tôi chỉ có thể đặt command thành chức năng thích hợp. Nhưng tôi đang gặp sự cố khi tìm cách tạo hành vi "on_click" cho các mục trong Chế độ xem ảnh.

Tuỳ chọn, phương pháp nào của Treeview, v.v., cho phép tôi liên kết lệnh với các mục cụ thể và thực hiện lệnh đó "on_click"?

Trả lời

16

Nếu bạn muốn điều gì đó xảy ra khi người dùng nhấp đúp, hãy thêm một ràng buộc vào "<Double-1>". Vì một nhấp chuột duy nhất đặt lựa chọn, trong cuộc gọi lại của bạn, bạn có thể truy vấn tiện ích con để tìm hiểu những gì được chọn. Ví dụ:

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

Giải pháp trước thất bại khi chọn nhiều yếu tố và người dùng sử dụng SHIFT+CLICK (ít nhất là trên máy Mac).

Đây là một giải pháp tốt hơn:

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() 
Các vấn đề liên quan