Der*_*rce 6 python tkinter sprite-sheet
我在Python的Tkinter中编写了一个GUI,我找不到如何使用canvas的create_image方法只从spritesheet中绘制一个sprite.提前感谢任何能告诉我我需要做什么的人!
首先,我强烈建议你使用Pygame,因为它有一个用于此目的的具体模块,并且PhotoImage类需要保持对每个图像的引用以避免被垃圾收集(这有时有点棘手).
话虽如此,这是一个如何使用Tkinter绘制单个精灵的示例(我在本例中使用的spritesheet就是这个,转换为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()
Run Code Online (Sandbox Code Playgroud)