簡體   English   中英

任何ttk樹視圖行的不同tkinter綁定

[英]Different tkinter binding for any ttk treeview row

我正在編寫一個簡單的腳本,該腳本創建一個ttk樹視圖(充當表),並且雙擊它會打開一個文件(路徑保存在字典中)。 通過這種方法可以雙擊打開:

t.bind("<Double-1>", lambda f=nt[x]["URIallegato"]: os.startfile(str(f)))

但是,這並沒有給我該行的ID(存儲在#0列中)。 使用ID,我可以獲得保存在字典中的文件的路徑。 這是完整的Treeview代碼:

t=Treeview(w)
t.pack(padx=10,pady=10)
for x in list(nt.keys()):
    t.insert("",x,text=nt[x]["allegati"])
    if nt[x]["allegati"]!="":
        t.bind("<Double-1>",
               lambda f=nt[x]["URIallegato"]: os.startfile(str(f)))

謝謝!

通常的方法是在樹形視圖上綁定單個綁定以進行雙擊。 單擊的默認綁定將選擇該項目,在雙擊綁定中,您可以向樹視圖詢問所選項目。

如果您將值與treeview項相關聯,則可以獲取它們,從而不必將其存儲在字典中。

這是一個例子:

import tkinter as tk
from tkinter import ttk

def on_double_click(event):
    item_id = event.widget.focus()
    item = event.widget.item(item_id)
    values = item['values']
    url = values[0]
    print("the url is:", url)

root = tk.Tk()
t=ttk.Treeview(root)
t.pack(fill="both", expand=True)

t.bind("<Double-Button-1>", on_double_click)

for x in range(10):
    url = "http://example.com/%d" % x
    text = "item %d" % x
    t.insert("", x,  text=text, values=[url])

root.mainloop()

暫無
暫無

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

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