如果turtle的图像为gif图,那么海龟在旋转时,图像本身是不旋转的.这个类继承自Turtle,实现让海龟的图像旋转,并能能缩放。当然由于采用pillow模块实现,所以能支持更多的图像格式。
""" 可旋转与缩放的Sprite类_继承自Turtle """ import os from PIL import ImageTk, Image from turtle import Turtle,Shape,Screen class Sprite(Turtle): """ 继承自Turtle的角色类。 """ def __init__(self,image=None,scale=(1,1)): Turtle.__init__(self,visible=False,shape='turtle') if image!=None: # 原始图形,最好面向右 self.imagebasename = os.path.basename(image) self.im = Image.open(image) self.im = self.im.convert('RGBA') self.imsize = self.im.size # 图像原始大小 self.imwidth = self.im.width # 图像原始宽度 self.imheight = self.im.height # 图像原始高度 #self.rawshape = Shape('image',ImageTk.PhotoImage(self.im)) self.shapesize(*scale) self.st() def _rotate(self,angle): """seth,right,left最终都要调用它,所以重写它就行了""" def shapesize(self,stretch_wid=None, stretch_len=None, outline=None): """重定义shapesize方法""" if __name__ == "__main__": cs =['red','pink','dodger blue','cyan'] screen = Screen() screen.delay(20) screen.bgcolor("orange") screen.colormode(255) screen.setup(480,360) screen.title("可旋转与缩放的Sprite类_继承自Turtle") s = 2 c = (255,0,0) t = Sprite('bugx.png',scale=(s,s)) t.color('white') t.pensize(4) for i in range(4): t.color(cs[i]) t.begin_fill() for _ in range(4): t.fd(100) for a in range(9): t.rt(10) t.end_fill() t.shapesize(s,s) s = s + 0.1 t.right(90) screen.mainloop()
如需要查看完整代码,请
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)