放假闲来无事,便继续学习python来放松。最近在学习做桌宠,只不过是基于tkinter的,毕竟不需要安装第三方库,方便。
桌宠,必须要显示在桌面上,具体怎么办我不细讲——本文要解决的问题是:
我有一张透明的图片(立绘),tk窗口也变成了透明的了,但图片用Label显示出来但就是说什么都不透明!(气死了!)
解决方案是:
将图片所在的Label的bg(background)属性改为‘white’!
这样图片就透明了。
测试代码如下:
#全部导入!
from tkinter import *
#网上这么做,我就这么做了,以后我打算仔细研究一下这个pillow。
from PIL import Image, ImageTk
class Pet(Tk): #继承Tk,方便;注意:self就是root本身。
def __init__(self):
super(Pet ,self).__init__()
self.title("PET")
self.geometry("800x600+200+200")
self.config(bg='white') #本身就要变成白色,与下面呼应。
self.attributes('-topmost',1) #最顶上TOP
self.wm_attributes('-transparentcolor', 'white') #将白色变为透明
self.overrideredirect(True) #隐藏一下边框,毕竟是桌宠
def picture(self):
global pic #这个不global的话,函数结束,pic释放。
img = Image.open(r"Entropy\Character\Lucy\magic.png")
print(img.mode) #检测img是不是透明的(立绘)
pic = ImageTk.PhotoImage(img)
Label(self ,image=pic ,bg='white').place(x=0 ,y=0) #!关键!
self.mainloop()
if __name__ == "__main__":
pet = Pet()
pet.picture()
抛砖引玉,有不懂的地方请说,我尽全力来解答。
欢迎指正!
24/02/08