如何在 Tkinter 中使标签背景透明?

时间:2021-06-18 10:11:56

标签: python tkinter python-imaging-library

我想在背景中和 2 个标签上方放置图像,但它们带有彩色背景并覆盖图像。 在这段代码中,我插入了一个图像并覆盖了 2 个标签。我找不到使 2 个标签的背景透明的方法。 欢迎任何有关如何改进整个代码的建议。

from tkinter import *
import tkinter as tk
from PIL import Image, ImageTk

def resize_image(event):
    new_width = event.width
    new_height = event.height

    image = copy_of_image.resize((new_width, new_height))
    photo = ImageTk.PhotoImage(image)

    label.config(image=photo)
    label.image = photo  # avoid garbage collection

root = tk.Tk()
root.title("Alma")
root.geometry('600x600')

frame = Frame(root, relief='raised', borderwidth=2)
frame.pack(fill=BOTH, expand=YES)
frame.pack_propagate(False)

copy_of_image = Image.open("nvidia.jpg")
photo = ImageTk.PhotoImage(copy_of_image)

label = Label(frame, image=photo)
label.place(x=0, y=0, relwidth=1, relheight=1)
label.bind('<Configure>', resize_image)
#label(Tk,image=copy_of_image,bg='grey').pack()
#Tk.wm_attributes("-transparentcolor", 'grey')

center_frame = Frame(frame, relief='raised', borderwidth=2)
center_frame.place(relx=0.5, rely=0.5, anchor=CENTER)

def countdown(count):
    # change text in label        
    global labela
    labela["text"] = str(count)
    if count > 0:
        # call countdown again after 2000ms (1s)
        root.after(1000, countdown, count-1)
    
    labela.pack(fill=tk.BOTH, side=tk.BOTTOM, expand=True)

labelb = tk.Label(root)

labelb = tk.Label(
    center_frame,
    text="Hello, Tkinter",
    fg="green",
    width=16,
    height=6,
    font='Calibri 50'
)

labela = tk.Label(
    center_frame,
    fg="green",
    width=16,
    height=6,
    font='Calibri 50')

countdown(3)
labelb.pack(fill=tk.BOTH, side=tk.TOP, expand=True)
root.after(4000, root.destroy)  

root.mainloop()

0 个答案:

没有答案
相关问题