背景标签Python Tkinter出现问题

时间:2019-02-02 10:43:58

标签: python tkinter background label

我正在制作一个带有三个标签的基本窗口。问题是这些标签具有白色背景,我不希望那样。 我希望这些标签变得没有背景,但是我没有任何想法。如果有人知道如何解决,请告诉我。

PD:我使用了画布,但是有很多问题,但是我认为制作画布是解决方案,但是我不知道该怎么做

屏幕截图

enter image description here

代码

42

1 个答案:

答案 0 :(得分:0)

您可以尝试使用以下代码设置背景色:

label.config(bg="gray")

您可以尝试使背景色透明:

root.wm_attributes('-transparentcolor', root['bg'])

使默认颜色透明或仅使用画布,应该像

canvas.create_text(x,y,text =“ Some text”,...)

我已经看到有人使用PIL做一些解决方法,但是它用德语: https://www.python-forum.de/viewtopic.php?t=20573

无论如何,使用tkinter,您打算做的事情似乎很复杂。 如果您计划的话,也许您应该只是选择一个不同的GUI库 在界面上添加更多精美功能。

编辑:

那你为什么不试试这个呢?

import Tkinter as    tk
from   PIL    import Image, ImageTk, ImageDraw
from   os     import listdir,curdir

class BlendedRectangle(object):

def __init__(self, xpos=0, ypos=0, width=10, height=10, image=None,
        fill='black', intensity=1.0):

        self.xpos = xpos
        self.ypos = ypos
        self.width = width
        self.height = height
        self.image = image
        self.fill = fill
        self.intensity = intensity


        self.coords = (self.xpos, self.ypos, self.xpos+self.width,
            self.ypos+self.height)


        self.bottom_image = self.image.crop(self.coords)


        self.top_image = self.image.crop(self.coords)

        self.draw = ImageDraw.Draw(self.top_image)

        self.draw.polygon([
            (0, 0), (self.width, 0), (self.width, self.height),
            (0, self.height), (0, 0)], fill= self.fill)

        self.blended_graphic_obj = Image.blend(self.bottom_image,
            self.top_image, self.intensity)

        self.image.paste(self.blended_graphic_obj, (self.xpos , self.ypos))

        self.tk_image  = ImageTk.PhotoImage(self.image)

root = tk.Tk()

image = Image.open("my_image.jpg")
image_width, image_height = image.size

canvas = tk.Canvas(root, width=image_width, height=image_height)
canvas.pack()

image_obj = BlendedRectangle(10, 10, 50, 50, image, 'red', intensity=0.3)
canvas.create_image(0, 0, image=image_obj.tk_image, anchor='nw')

root.mainloop()