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

时间:2016-11-07 17:07:29

标签: python tkinter labels

一个月前我开始学习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标签就能很好地运作。它显示了带有“hi”文字的图片。 不过,我希望v1标签与v具有相同的背景,而不是灰色背景。

1 个答案:

答案 0 :(得分:0)

所有小部件都有背景 - 它们不透明。

您可以使用tk.Canvas将没有背景的文字放在图片上,或将透明图片放在文字上。

effbot.org:CanvasPhotoImage

#!/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 (带透明背景的图片)

enter image description here