2016-11-07 2 views
1

나는 한 달 전에 파이썬을 배우기 시작했다. 미안 내 질문이 좋지 않다면, 이것이 나의 첫 번째 질문이다.동일한 그림으로 레이블 배경을 변경하는 방법

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

모든 위젯에는 백그라운드가 있습니다. [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

관련 문제