如果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资源。)

