python中使用tkinter实现透明png的显示

问题遇到的现象和发生背景

python中使用tkinter实现透明png的显示时结果不尽人意

问题相关代码,请勿粘贴截图
# -*- coding: UTF-8 -*-
import tkinter
 
root = tkinter.Tk()
root.title('uncle1bo')        #窗口标题
root.resizable(False, False)    #固定窗口大小
windowWidth = 400               #获得当前窗口宽
windowHeight = 400              #获得当前窗口高
screenWidth,screenHeight = root.maxsize()     #获得屏幕宽和高
geometryParam = '%dx%d+%d+%d'%(windowWidth, windowHeight, (screenWidth-windowWidth)/2, (screenHeight - windowHeight)/2)
root.geometry(geometryParam)    #设置窗口大小及偏移坐标
root.wm_attributes('-topmost',1)#窗口置顶
root.overrideredirect(True)     #窗口无边框
#label图片
img_gif = tkinter.PhotoImage(file = r"D:\Study\uncle1bo.logo.zs.png")#测试图片路径
label_img = tkinter.Label(root, image = img_gif)
label_img.pack()

root.mainloop()

img

运行结果及报错内容

img

我的解答思路和尝试过的方法

蛤蟆住了,一时没有想到

我想要达到的结果

可以透过图片,看到后面运行的窗口大概是

img

的效果,顺便问一下怎么让这个窗口定时[比如time.sleep(3)]之后自动关闭?

参考
https://www.jb51.net/article/212488.htm
TRANSCOLOUR = 'gray'
root.wm_attributes("-transparentcolor", TRANSCOLOUR) #设置'gray'为透明色
label_img = tkinter.Label(root, image = img_gif, bg=TRANSCOLOUR) #设置 label 背景色为透明色'gray'
定时3秒之后自动关闭是root.after(3000,lambda : root.quit())

你题目的解答代码如下:

# -*- coding: UTF-8 -*-
import tkinter

root = tkinter.Tk()
root.title('uncle1bo')        #窗口标题
root.resizable(False, False)    #固定窗口大小
windowWidth = 400               #获得当前窗口宽
windowHeight = 400              #获得当前窗口高
screenWidth,screenHeight = root.maxsize()     #获得屏幕宽和高
geometryParam = '%dx%d+%d+%d'%(windowWidth, windowHeight, (screenWidth-windowWidth)/2, (screenHeight - windowHeight)/2)
root.geometry(geometryParam)    #设置窗口大小及偏移坐标
root.wm_attributes('-topmost',1)#窗口置顶
root.overrideredirect(True)     #窗口无边框

TRANSCOLOUR = 'gray'
root.wm_attributes("-transparentcolor", TRANSCOLOUR)  #设置'gray'为透明色

#label图片
img_gif = tkinter.PhotoImage(file = r"D:\Study\uncle1bo.logo.zs.png")#测试图片路径
label_img = tkinter.Label(root, image = img_gif, bg=TRANSCOLOUR)  #设置 label 背景色为透明色'gray'
label_img.pack()

root.after(3000,lambda : root.quit()) # 定时3秒之后自动关闭

root.mainloop()

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632