import tkinter as tk import itertools class AnimatedSprite: def __init__(self, path, sprite_size): self.frames = [] self.sprite_size = sprite_size # Size of each sprite in the sheet self.load_frames(path) self.index = itertools.cycle(range(len(self.frames))) def load_frames(self, path): spritesheet = tk.PhotoImage(file=path) spritesheet_width = spritesheet.width() spritesheet_height = spritesheet.height() for y in range(0, spritesheet_height, self.sprite_size[1]): for x in range(0, spritesheet_width, self.sprite_size[0]): frame = spritesheet.subimage(x, y, x + self.sprite_size[0], y + self.sprite_size[1]) resized_frame = frame.subsample(1) # Resize image to half self.frames.append(resized_frame) def next_frame(self): return self.frames[next(self.index)]