gpt4 book ai didi

python - 任何 ttk TreeView 行的不同 tkinter 绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-03 14:40:22 26 4
gpt4 key购买 nike

我正在编写一个简单的脚本,它创建一个 ttk TreeView (充当表格),当您双击它时,它会打开一个文件(路径保存在字典中)。通过此方法可以双击打开:

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 上绑定(bind)单个绑定(bind)以进行双击。单击的默认绑定(bind)将选择该项目,在双击绑定(bind)中,您可以向 TreeView 询问所选项目。

如果将值与 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()

关于python - 任何 ttk TreeView 行的不同 tkinter 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46592551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com