使用 Treeview 打开 PDF

Opening PDFs using Treeview

我的桌面上有一个文件,它有 100 多个子文件夹,所有子文件夹都分支出来以组织大量 PDF。我正在尝试制作一个使用 GUI 来更好地访问和打开这些 PDF 的应用程序。 Treeview 将是完美的,但我无法弄清楚如何使用按钮以外的任何东西实际打开文件。有人可以告诉我如何使用这些来查找文件路径并打开 pdf 吗?谢谢

编辑:

基本上,我有一棵看起来像这样的树:

tree = ttk.Treeview(vender_class)
tree.pack(fill=BOTH)
tree.insert(parent='', index='end', iid=1, text="Thresholds")
tree.insert(parent='1', index='end', iid=2, text="Butt Hung")
tree.insert(parent='2', index='end', iid=3, text="THBH")
tree.insert(parent='1', index='end', iid=4, text="Center Hung")
tree.insert(parent='4', index='end', iid=5, text="THCH")
tree.insert(parent='1', index='end', iid=6, text="Offset Hung")
tree.insert(parent='6', index='end', iid=7, text="THOH")
tree.insert(parent='1', index='end', iid=8, text="Other")
tree.insert(parent='8', index='end', iid=9, text="THO")

open_button=ttk.Button(vender_class, text="Open PDF", command=openfile)
open_button.pack()

我希望能够简单地双击最终项目(即“THBH”)并在 Bluebeam 上打开 PDF。如果这不起作用,那么您如何 link 将其连接到按钮,以便如果选择“THBH”并按下按钮,它会以这种方式打开 PDF?

首先为双击打开 PDF 的行附加一个特定的标签。

然后在Treeview小部件上绑定双击事件,然后在回调中检查双击的项目是否有特定的标签。如果有,则根据点击项的text打开PDF文件。

tree.insert(parent='', index='end', iid=1, text="Thresholds")
tree.insert(parent='1', index='end', iid=2, text="Butt Hung")
tree.insert(parent='2', index='end', iid=3, text="THBH", tags='pdf')
tree.insert(parent='1', index='end', iid=4, text="Center Hung")
tree.insert(parent='4', index='end', iid=5, text="THCH", tags='pdf')
tree.insert(parent='1', index='end', iid=6, text="Offset Hung")
tree.insert(parent='6', index='end', iid=7, text="THOH", tags='pdf')
tree.insert(parent='1', index='end', iid=8, text="Other")
tree.insert(parent='8', index='end', iid=9, text="THO", tags='pdf')

def on_double_click(event):
    iid = tree.focus() # get the iid of the selected item
    tags = tree.item(iid, 'tags') # get tags attached
    if 'pdf' in tags:
        text = tree.item(iid, 'text') # get the text of selected item
        print('open PDF for', text)
        # open PDF based on text
        ...

tree.bind('<Double-Button-1>', on_double_click)