簡體   English   中英

TreeView 中的圖像未顯示 Tkinter

[英]Image in TreeView not showing Tkinter

我正在 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

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

只需使用 self 關鍵字將“chromelogo”轉換為類變量即可解決問題:

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

self.chromelogo=self.chromelogo.subsample(10,10)

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM