我在乌龟上制作了这样的图形:
from turtle import *
来自随机进口randint
左(20)
速度(“最快”)
对于我在范围(36)中:
左(120)
fd(100)
左(120)
fd(100)
左(120)
fd(100)
左(10)
现在如何使三角形圆旋转?就像我要拖动它,并且希望它旋转一样。
请回答!
答案 0 :(得分:0)
如何使三角形圆旋转?
在没有人看的情况下,通过反复清除并重画它来稍微旋转一下:
from turtle import *
def rotate():
clear()
for _ in range(36):
for _ in range(3):
left(120)
fd(100)
left(10)
update()
left(1)
ontimer(rotate, 60)
left(20)
tracer(False)
rotate()
exitonclick()
此代码易碎,因为除update()
本身外,其他操作可能会导致屏幕更新,因此重新排列代码或替换其他方法(例如undo()
)可能不会产生您想要的影响
我要拖动它
这比较棘手,您获得的结果可能取决于您的体系结构(Unix或Windows)。我们将其放入可拖动的游标中。但是光标会将其多边形视为已填充。因此,取决于基础的Tk实施,您的结果可能会有所不同。很多。
from turtle import *
def graphic():
penup()
tracer(False)
begin_poly()
for _ in range(36):
for _ in range(3):
left(120)
fd(100)
left(10)
end_poly()
tracer(True)
pendown()
return get_poly()
def drag_handler(x, y):
ondrag(None)
goto(x, y)
ondrag(drag_handler)
register_shape('graphic', graphic())
ondrag(drag_handler)
shape('graphic')
color('black', 'white')
mainloop()
我担心在Windows上,该光标可能只是一个大的黑色斑点。
我想拖动它,然后旋转它
我想把它留给读者练习。但是无论如何这里是
from turtle import *
def rotate():
left(1)
ontimer(rotate, 60)
def graphic():
penup()
tracer(False)
begin_poly()
for _ in range(36):
for _ in range(3):
left(120)
fd(100)
left(10)
end_poly()
tracer(True)
pendown()
return get_poly()
def drag_handler(x, y):
ondrag(None)
goto(x, y)
ondrag(drag_handler)
register_shape('graphic', graphic())
ondrag(drag_handler)
shape('graphic')
color('black', 'white')
rotate()
mainloop()
同样,根据环境,您可能会拖动一个很大的旋转的黑色斑点。现在图形图像是光标,旋转部分更简单了。