【问题标题】:how to change labels background as same picture如何将标签背景更改为同一张图片
【发布时间】:2016-11-07 17:07:28
【问题描述】:

一个月前我开始学习 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 相同的背景,而不是灰色背景。

【问题讨论】:

  • 所有小部件都有背景。你可以使用Canvas来放图片和文字。

标签: python tkinter labels


【解决方案1】:

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

您可以使用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(透明背景图片)

【讨论】:

    猜你喜欢
    • 2019-11-09
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多