在Canvas上放置.png文件的好方法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Canvas上放置.png文件的好方法?相关的知识,希望对你有一定的参考价值。
这似乎是一个非常常见的应用程序,但是我无法使其工作:
def Img2Canvas(Img,Canv):#此功能通过拉伸将图像放置在画布上
Canv.update()
H=Canv.winfo_height()
W=Canv.winfo_width()
print([W,H])
temp=ImageTk.PhotoImage(Img.resize((W,H)))
Canv.create_image(1,1,anchor=tk.NW,image=temp)
然后我在主程序中调用了此函数:
cv1=tk.Canvas(root,width=200,height=200,bg='yellow')
Img2Canvas(p1.Img,cv1)
1),这不起作用,画布未更新,我只有黄色背景。仅当我不在函数内部执行temp=ImageTk.PhotoImage(Img.resize((W,H)))
,而是在函数外部调整图像大小并直接输入temp时,它才起作用...
2)W
和H
似乎是204,而不是200,所以winfo_height()
总是再给您4个像素吗?
3)是否有更好的方法在Tkinter中显示图形文件(jpg,png等)?
答案
您需要保留对图像temp
的引用,因为它是一个局部变量,在函数结束后将被垃圾回收。建议返回temp
并将其分配给变量:
def Img2Canvas(Img, Canv):
...
return temp
...
tkimg = Img2Canvas(p1.Img, cv1)
宽度和高度上的多余像素为highlightthickness
的大小,在创建画布时将其设置为0:
cv1 = tk.Canvas(root, width=200, height=200, highlightthickness=0, bg='yellow')
以上是关于在Canvas上放置.png文件的好方法?的主要内容,如果未能解决你的问题,请参考以下文章