2013-04-14 197 views
2

在我創建的簡單遊戲中,我當前擁有佔位符矩形對象作爲圖形。我試圖用精靈替換它們,但據我瞭解,Tkinter不支持PNG或Alpha透明。我使用Python 3.3,它不適用於PIL(因爲它是一個學校項目,我只是試圖將Tkinter作爲唯一的外部庫)。有沒有辦法使用支持的文件格式的alpha通道,以便我可以有多個圖層?我只想過濾出白色像素。Tkinter PhotoImage中的透明度

+0

我只是覺得顏色#FF00FF可以是透明的,也可以設置透明的顏色。順便說一下,我發現一個具有掩碼數據的位圖圖像 - 可能是 – User

+0

你知道如何實現這個嗎? –

+0

啊,我記得..我想你可以嘗試設置只有彩色像素和其他像素應該是透明的。如果不行,請查看Tkinter.BitmapImage。 – User

回答

1

我能夠使用具有透明度的圖像。我理解您希望避免使用PIL,但下面的代碼工作並演示Tkinter將支持具有透明度的格式。

from Tkinter import Tk, Canvas 
    import PIL 
    root = Tk() 
    tkimg = PIL.ImageTk.PhotoImage('cat1-a.gif') 
    canvas = Canvas(root, height=600, width=600) 
    canvas.grid() 
    def stamp(event): 
     canvas.create_image(event.x, event.y, image=tkimg) 
    canvas.bind('<ButtonPress-1>', stamp) 
    root.mainloop() 

three create_image() calls demonstrate transparency

+0

當在Linux下無法使用ImageTk(無模塊_imagingtk)時,請參閱以下鏈接:http://askubuntu.com/questions/156484/how-do-i-install-python-imaging-library-pil – lyvic

+1

您的回答可能會不太適合這個問題,但它具有相關性和一個很好的例子,有可能幫助人們在這裏發現類似的問題。從頂部添加'Tkinter import Tk,Canvas'和'import PIL'並在底部添加'root.mainloop()'來運行。 – valid

+0

Thanks @valid,我在代碼中添加了這個代碼,以便將來讀者的方便和清晰。 –