Tkinter 树视图 - 如何在文本开头添加图标

问题描述 投票:0回答:2

我们都熟悉现代计算机的树形视图。我想使用树视图将此外观添加到我的 tkinter 应用程序中,通过图像突出显示什么是文件,什么是文件夹,后跟其名称。但我该怎么做呢?

我想要什么:

This is what I want:

我有什么:

What I currently have

这是我尝试过的两行,但给了我错误。

folderLogo = tkinter.BitmapImage(file="icons/folder24.xbm")

self.treeOMine.insert(parent='', index=END, iid=rowid, text=path, tags=('even',), image=folderLogo)

我也尝试过 bmp ang png 文件,然后我发现 xbm 是我需要的。

我可以看到到处都提到它,但我似乎不知道如何继续。还是我在这里误解了什么?

引用:“通常,您还可以指定每个项目的名称,即树中显示的文本。其他选项允许您在名称旁边添加图像,指定节点是打开还是关闭等。” (https://tkdocs.com/tutorial/tree.html

另外https://docs.python.org/3/library/tkinter.ttk.html提到了添加图像的可能性。这让我真的认为这是可能的。

enter image description here

python user-interface tkinter treeview icons
2个回答
2
投票

您应该使用

image
选项,并提供
PhotoImage
的实例:

tree = ttk.Treeview(root)
tree.pack(fill="both", expand=True)

folder_image = tk.PhotoImage(file="folder.png")
file_image = tk.PhotoImage(file="page.png")

folder_a = tree.insert("", "end", text="Folder A", image=folder_image)
tree.insert(folder_a, "end", text="File 1", image=file_image)
tree.insert(folder_a, "end", text="File 2", image=file_image)
tree.insert(folder_a, "end", text="File 3", image=file_image)

enter image description here


0
投票

我的解决方案:

    from PIL import Image, ImageTk

    self.checkmark_path = "checkmark.png"
    temp_image = Image.open(self.checkmark_path).resize((15, 15))
    self.checkmark_image = ImageTk.PhotoImage(temp_image)
    self.tree_view.treeview_widget.tag_configure(item_iid, image=self.checkmark_image)

结果:
pil image

© www.soinside.com 2019 - 2024. All rights reserved.