【问题标题】:Different tkinter binding for any ttk treeview row任何 ttk 树视图行的不同 tkinter 绑定
【发布时间】:2017-10-05 18:32:24
【问题描述】:

我正在编写一个简单的脚本来创建一个 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)))

谢谢!

【问题讨论】:

标签: python tkinter treeview bind ttk


【解决方案1】:

执行此操作的正常方法是在树视图上绑定单个绑定以进行双击。单击的默认绑定将选择项目,在您的双击绑定中,您可以向树视图询问所选项目。

如果您将值与树视图项相关联,则可以获取它们,这样您就不必将它们存储在字典中。

这是一个例子:

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()

【讨论】:

    猜你喜欢
    • 2017-02-06
    • 2018-12-30
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 2011-12-15
    • 2018-01-31
    相关资源
    最近更新 更多