簡體   English   中英

用於單擊Tkinter Treeview小部件項的命令?

[英]Command for clicking on the items of a Tkinter Treeview widget?

我正在使用Tkinter創建GUI,GUI的主要部分是兩個Treeview對象。 單擊一個項目(即目錄) 兩次時,我需要更改 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])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM