不同的tkinter绑定任何ttk treeview行
问题描述:
我正在写一个简单的脚本,创建一个ttk treeview(作为一个表),并且,当你双击它,它会打开一个文件(保存路径字典)。双击打开,可以通过这种方法:不同的tkinter绑定任何ttk treeview行
t.bind("<Double-1>", lambda f=nt[x]["URIallegato"]: os.startfile(str(f)))
然而,这并没有给我行(存储在#0
列)的ID。使用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)))
谢谢!
答
执行此操作的正常方法是绑定树视图上的单个绑定以进行双击。单击的默认绑定将选择该项目,并且在双击绑定中,您可以向树视图请求所选项目。
如果将值与树视图项关联,则可以获取它们,以便不必将它们存储在字典中。
下面是一个例子:
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()
+0
谢谢,它的作品! –
要覆盖的方法结合到TreeView't',我在你的最后一个问题给出了一个答案... – PRMoureu
[Tkinter的/ TTK的可能的复制 - 防止串ButtonPress转换](https://stackoverflow.com/questions/46506048/tkinter-ttk-prevent-string-to-buttonpress-conversion) – PRMoureu