一个月前我开始学习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
具有相同的背景,而不是灰色背景。
答案 0 :(得分:0)
所有小部件都有背景 - 它们不透明。
您可以使用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 (带透明背景的图片)