2010-07-17 14 views
13

tôi đặt trong một hình ảnh PNG trong suốt một phần trong Tkinter và tất cả tôi nhận được là nàyLàm cách nào để Tkinter hỗ trợ PNG trong suốt?

alt text http://i26.tinypic.com/aelh82.jpg

Làm thế nào để làm cho tam giác tối bên phải rõ ràng? (như nó được cho là) ​​

Đây là python 2.6 trên Windows 7, btw.

+0

Bạn có thể xác nhận rằng hình ảnh xuất hiện với độ trong suốt trong một chương trình khác không? – Nathan

Trả lời

16

Dưới đây là một ví dụ (các tập tin PNG example.png có rất nhiều tính minh bạch ở những nơi khác nhau):

 
from Tkinter import Tk, Frame, Canvas 
import ImageTk 

t = Tk() 
t.title("Transparency") 

frame = Frame(t) 
frame.pack() 

canvas = Canvas(frame, bg="black", width=500, height=500) 
canvas.pack() 

photoimage = ImageTk.PhotoImage(file="example.png") 
canvas.create_image(150, 150, image=photoimage) 

t.mainloop() 

Bạn cần chắc chắn rằng hình ảnh đã được lưu dưới dạng RGBA - RGB với một kênh alpha. Bạn có thể kiểm tra điều đó bằng cách sử dụng chương trình đồ họa bạn chọn hoặc sử dụng PIL (Python Imaging Library):

 
import Image 
im = Image.open("button.png") 
print im.mode 

Điều này sẽ in "RGBA". Nếu không, bạn sẽ phải đảm bảo kênh alpha được lưu với hình ảnh. Bạn sẽ phải tham khảo hướng dẫn chương trình đồ họa của bạn để biết cách thực hiện điều đó.

+9

Tôi có thể lưu ý rằng 'ImageTk' không phải là một phần của thư viện chuẩn Python, mà là thư viện Python Imaging Library, mà phải được cài đặt riêng biệt. Ngoài ra, PIL chưa hỗ trợ Python 3, vì vậy mã trên sẽ chỉ hoạt động trên Python 2.x. – fbmd

+1

@fbmd: Nhận xét hay. Đây là một bài viết liên quan: http://stackoverflow.com/questions/3896286/image-library-for-python-3 –

+0

Nếu bạn thích nhận xét, bạn luôn có thể upvote. ;-) – fbmd