2013-05-16 23 views
4

我正在Python的Tkinter中編寫一個GUI,我無法找到如何使用畫布的create_image方法僅從spritesheet繪製單個精靈。在此先感謝任何能告訴我我需要爲此做什麼的人!在Tkinter中使用Spritesheets

+2

有一個處理spritesheets @ pygame的示例:http://www.pygame.org/wiki/Spritesheet。與Canvas.create_image一起使用它不應該很費力。 –

回答

3

首先,我強烈建議您使用Pygame,因爲它具有concrete module用於此目的,並且PhotoImage類需要保留對每個圖像的引用以避免垃圾收集(有時有點棘手) 。

話雖如此,這是一個如何與Tkinter繪製單個精靈的示例(我用於此示例的spritesheet是this one,轉換爲GIF文件)。

import Tkinter as tk 

class App(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 
     self.spritesheet = tk.PhotoImage(file="spritesheet.gif") 
     self.num_sprintes = 4 
     self.last_img = None 
     self.images = [self.subimage(32*i, 0, 32*(i+1), 48) for i in range(self.num_sprintes)] 
     self.canvas = tk.Canvas(self, width=100, height=100) 
     self.canvas.pack() 
     self.updateimage(0) 

    def subimage(self, l, t, r, b): 
     print(l,t,r,b) 
     dst = tk.PhotoImage() 
     dst.tk.call(dst, 'copy', self.spritesheet, '-from', l, t, r, b, '-to', 0, 0) 
     return dst 

    def updateimage(self, sprite): 
     self.canvas.delete(self.last_img) 
     self.last_img = self.canvas.create_image(16, 24, image=self.images[sprite]) 
     self.after(100, self.updateimage, (sprite+1) % self.num_sprintes) 

app = App() 
app.mainloop() 
0

您有幾種選擇在這裏:

Tkinter的只支持3種文件格式:GIF,PGM和PPM。 您需要將文件轉換爲.GIF,然後加載它們您可以使用Python影像庫(PIL)及其tkinter擴展來使用PNG圖像。

你可以在這裏下載PIL包: http://www.pythonware.com/products/pil/

另外,如上所述,pygame的具有更好的內置支持圖片,並且可以更容易使用。

祝你好運!