TreeView中的图像未显示Tkinter

时间:2017-09-30 18:19:28

标签: python tkinter treeview

我在Tkinter Python 3.4中创建了一个TreeView我添加了一个chrome徽标,但图像从未出现过。

treeview=ttk.Treeview(frame3)
chromelogo=PhotoImage(file="./Images/minor-logo.png")

chromelogo=chromelogo.subsample(10,10)

treeview.pack(fill=BOTH,expand=True)
treeview.insert('','0','Chrome',text='Chrome', image=chromelogo)

treeview.insert('Chrome','0',"shit",text="shit",image=chromelogo)

treeview.insert('','1','Chrome3',text='Chrome3')

chrome徽标的链接:http://logos-download.com/wp-content/uploads/2016/05/Chrome_icon_bright.png

1 个答案:

答案 0 :(得分:0)

Photoimage不允许你打开图像而不是gif类型,如果你想在tkinter中打开图像而不是gif尝试PIL模块。您可以使用任何方法来安装PIL模块,我喜欢命令行

python -m pip install pillow

因为你希望你的图像在树形视图中的脚部使用它来调整大小并插入它

from tkinter import *
from tkinter import ttk
from PIL import ImageTk,Image
win=Tk()


chromelogo=Image.open("./Images/minor-logo.png")#open the image using PIL
imwidth=10#the new width you want 

#the next three lines of codes are used to keep the aspect ration of the image
wpersent=(imwidth/float(chromelogo.size[0]))
hsize=int(float(chromelogo.size[1])*float(wpersent))#size[1] means the height and the size[0] means the width you can read more about this in th PIL documentation
chromelogo=ImageTk.PhotoImage(chromelogo.resize((imwidth,hsize),Image.ANTIALIAS))# set the width and put it back in the chromelogo variable

treeview=ttk.Treeview(win)
treeview.pack(fill=BOTH,expand=False)
treeview.insert('','0','Chrome',text='Chrome', image=chromelogo)
treeview.image = chromelogo#this one is for telling tkinter not to count the image as garbage
treeview.grid(row=0,rowspan=2,columnspan=2,padx=220,sticky=N+W,pady=20)

chromelogo2=ImageTk.PhotoImage(Image.open("./Images/minor-logo.png"))
treeview.insert('Chrome','0',"shit",text="shit",image=chromelogo2)#here you can also insert the unresized logo so you could see it as big as it is

treeview.insert('','1','Chrome3',text='Chrome3')

win.mainloop()