Python Tkinter中按钮上的透明背景
我有一个带有按钮图像的Python Tkinter中按钮上的透明背景,python,button,background,tkinter,Python,Button,Background,Tkinter,我有一个带有按钮图像的按钮,但当它在我的窗口中时,按钮的背景与窗口的背景发生冲突。这是一个.png图像,但tkinter似乎希望通过添加灰色空间将图像保持为四边形。有没有办法让按钮的空白区域变得透明,这样你就只剩下按钮图像了 我在Windows 8上使用的是Python 3.4.2。如果您使用的是带有导入PIL的.png,则Python支持透明性 但是,在tkinter中,.Button小部件不支持透明度 所以,你将有一个坚实的背景上的透明图像 如果您是windows用户,最好的解决方案是: 这
按钮
,但当它在我的窗口中时,按钮的背景与窗口的背景发生冲突。这是一个.png图像,但tkinter
似乎希望通过添加灰色空间将图像保持为四边形。有没有办法让按钮的空白区域变得透明,这样你就只剩下按钮图像了
我在Windows 8上使用的是Python 3.4.2。如果您使用的是带有导入PIL的.png,则Python支持透明性 但是,在
tkinter
中,.Button
小部件不支持透明度
所以,你将有一个坚实的背景上的透明图像
如果您是windows用户,最好的解决方案是:
这个解决方案有点棘手,因为您需要使用PIL,但可以正常工作。经过两小时的战斗才解决 您需要使用PIL作为映像加载器,然后将映像传递给tkinter,但使用root(main tk.tk()类对象)——否则映像将不可见,因为它在垃圾收集器中消失了,只剩下映像的空间。简化代码如下:
import tkinter as tk
from PIL import Image, ImageTk
root = tk.Tk()
button = tk.Button(self.left_menu)
button_load = Image.open('assets/search.png')
root.button_img = ImageTk.PhotoImage(button_load)
button.config(image=root.button_img)
button_1.pack(side='top')
这很可能是一个
.png
图像问题。首先尝试将其更改为.gif
(支持透明背景),如果不起作用,请告诉我。PNG支持透明背景,并且从PIL
导入tkinter
的.PNG
保持透明。不,我已经将文件更改为gif格式,但同样的事情正在发生。我找到了一个半有用的页面。它概述了如何在标签上创建透明背景,但不幸的是,这种方法不适用于按钮。这里是链接:我认为问题可能在于,虽然图像是透明的,按钮本身不是透明的,因此您看到的灰色是图像后面的按钮。