任何 ttk 树视图行的不同 tkinter 绑定
Different tkinter binding for any ttk treeview row
我正在编写一个简单的脚本来创建一个 ttk 树视图(充当 table),当您双击它时,它会打开一个文件(路径保存在字典中) .可以通过此方法双击打开:
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)))
谢谢!
通常的做法是在树视图上绑定一个双击。单击的默认绑定将 select 项目,在您的双击绑定中,您可以向树视图询问 selected 项目。
如果您将值与树视图项相关联,则可以获取它们,这样您就不必将它们存储在字典中。
这是一个例子:
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()
我正在编写一个简单的脚本来创建一个 ttk 树视图(充当 table),当您双击它时,它会打开一个文件(路径保存在字典中) .可以通过此方法双击打开:
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)))
谢谢!
通常的做法是在树视图上绑定一个双击。单击的默认绑定将 select 项目,在您的双击绑定中,您可以向树视图询问 selected 项目。
如果您将值与树视图项相关联,则可以获取它们,这样您就不必将它们存储在字典中。
这是一个例子:
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()