2016-11-07 2 views
1

Я начал изучать 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 этикетки очень хорошо работает до тех пор, как я использую соединение с ним. Он показывает изображение с текстом «привет» на нем. Однако я хочу, чтобы метка v1 имела тот же фон, что и v, вместо серого фона.

+0

все виджеты имеют фон. Вы можете использовать [Canvas] (http://effbot.org/tkinterbook/canvas.htm) для размещения изображения и текста. – furas

ответ

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 (изображение с прозрачным фоном)

enter image description here

Смежные вопросы