Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter中按钮上的透明背景_Python_Button_Background_Tkinter - Fatal编程技术网

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格式,但同样的事情正在发生。我找到了一个半有用的页面。它概述了如何在标签上创建透明背景,但不幸的是,这种方法不适用于按钮。这里是链接:我认为问题可能在于,虽然图像是透明的,
按钮本身不是透明的,因此您看到的灰色是图像后面的
按钮。