如何将标签背景更改为同一图片

how to change labels background as same picture

一个月前我开始学习Python。对不起,如果我的问题不好,这是我在这里的第一个问题。

我用tkinter做了一个小游戏,但是遇到了问题

我做了一个大标签,上面有一张图片作为背景。每当我制作更多带有文字的标签时,文字都会有灰色背景。但是我想要的是每个文本都有我已经放置的图片作为背景。

这里有一些代码来解释它:

from tkinter import*
x=Tk()
x.geometry("1000x1000")
z=PhotoImage(file="D:\Blue.gif")
v=Label(x,text="hi",font=100,fg="red",compound=CENTER,image=z,width=1000,height=1000)
v.place(x=0,y=0)
v1=Label(x,text="OO",font=100,fg="red")
v1.place(x=300,y=400) 
x.mainloop()

v 标签在我使用 compound 时效果很好。它显示带有文本 "hi" 的图片。 但是我希望 v1 标签具有与 v 相同的背景,而不是灰色背景。

所有小部件都有背景 - 它们不可能是透明的。

您可以使用 tk.Canvas 在图像上放置无背景的文本或在文本上放置透明图像。

effbot.org: Canvas, PhotoImage

#!/usr/bin/env python3

import tkinter as tk
from PIL import Image, ImageTk

# --- constants ---

WIDTH = 800
HEIGHT = 600

# --- main ---

root = tk.Tk()

c = tk.Canvas(root, width=WIDTH, height=HEIGHT)
c.pack()

# only GIF and PGM/PPM
#photo = tk.PhotoImage(file='test.gif')

# other formats
image = Image.open('test_transparent.png')
photo = ImageTk.PhotoImage(image)
# use in functions - solution for "garbage collector" problem
c.image = photo

i = c.create_image((WIDTH//2, HEIGHT//2), image=photo)
t = c.create_text((WIDTH//2, HEIGHT//2), text='Hello World')

root.mainloop()

更改顺序,您会在文字上看到图片

t = c.create_text((WIDTH//2, HEIGHT//2), text='Hello World')
i = c.create_image((WIDTH//2, HEIGHT//2), image=photo)

test_transparent.png(透明背景图片)