在Tkinter的按钮上的透明背景

时间:2015-04-24 21:24:31

标签: python button background tkinter

我有一个带有按钮图像的Button但是当它在我的窗口中时,按钮的背景与窗口的背景发生冲突。它是一个.png图像,但tkinter似乎想通过添加灰色空间将图像保持为四边形。有没有办法让按钮的空白区域变得透明,以便您只剩下按钮图像?

我在Windows 8上使用Python 3.4.2。

2 个答案:

答案 0 :(得分:1)

该解决方案有点棘手,因为您需要使用 PIL 四处走动但有效。经过2小时的战斗才解决了。

您需要使用 PIL 作为图像加载器,然后使用根(主 tk.Tk() 类对象)将图像传递给 tkinter BUT - 否则图像在进入时将不可见垃圾收集器,只剩下图像的空间。简化代码如下:

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

答案 1 :(得分:0)

如果您使用带有import PIL python的.png,则支持透明度。

但是,在tkinter .Button窗口小部件中,不支持透明度。

所以你将拥有透明图像在纯色背景之上。

如果您是Windows用户,最好的办法就是这个解决方案:

Transparent background in a Tkinter window