如何在turtle to Move中制作图形?

How to make a graphic in turtle to Move?

我在 turtle 中做了这样的图形:

from turtle import *
from random import randint
left(20)
speed("fastest")
for i in range(36):
    left(120)
    fd(100)
    left(120)
    fd(100)
    left(120)
    fd(100)
    left(10)

它是这样的:

现在如何让三角圆旋转?比如我要拖它,我要它旋转。

how to make the triangle-circle rotate?

通过反复清空重绘,趁着没人看,稍微旋转一下:

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())可能不会产生影响你想要的。

I want to drag it

这比较棘手,您获得的结果可能取决于您的体系结构(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 这个光标可能看起来只是一个大的黑色斑点。

I want to drag it, and I want it to rotate

我想把它留作 reader 的练习。但无论如何:

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()

同样,根据环境的不同,您可能正在拖动一个大的、旋转的黑色斑点。现在图形图像是光标,旋转部分很多简单。