是否可以直观地移动已经绘制的图像? 每次移动时都不必重绘它? 因此,显示方形完整并向某个方向移动。
from turtle import *
def drawing():
forward(50)
left(90)
forward(50)
left(90)
forward(50)
left(90)
forward(50)
drawing()
done()
答案 0 :(得分:1)
turtle
没有特殊功能来移动所有元素。
但turtle
使用tkinter
使用Canvas
对象来显示元素
Canvas
具有获取所有显示元素并移动它们的功能。
turtle
可以访问画布(get_canvas()
),但稍后您必须知道tkinter
对画布和元素执行某些操作。
此示例绘制元素,然后按(300, 50)
移动
您也可以单击乌龟并拖动它以移动所有元素。
import turtle
t = turtle.Turtle()
# --- move all elements ---
def move(offset_x, offset_y):
canvas = turtle.getcanvas() # `turtle`, not `t`
for element_id in canvas.find_all():
canvas.move(element_id, offset_x, offset_y)
# --- move all on draging turtle ---
old_x = 0
old_y = 0
# get mouse current position
def on_click(x, y):
global old_x, old_y
old_x = x
old_y = y
# move elements
def on_drag(x, y):
global old_x, old_y
move(x-old_x, old_y-y)
old_x = x
old_y = y
t.onclick(on_click)
t.ondrag(on_drag)
# --- example ---
# draw something
for a in range(8):
for _ in range(8):
t.left(45)
t.fd(20)
t.right(45)
t.up()
t.fd(60)
t.down()
# move
move(300, 50)
# ---
turtle.done() # `turtle`, not `t`
答案 1 :(得分:0)
如果您需要移动的只是一组简单的填充多边形,您可以使用Turtle移动它而不会下降到tkinter
级别(尽管您可以通过使用非白色填充颜色来模拟未填充的多边形 - 白色钢笔颜色。)您可以创建一个自定义龟形状,并将乌龟移动到屏幕周围:
from turtle import Turtle, Screen, Shape
screen = Screen()
turtle = Turtle(visible=False)
turtle.speed("fastest")
turtle.penup()
shape = Shape("compound")
for octogon in range(8):
turtle.begin_poly()
for _ in range(8):
turtle.left(45)
turtle.fd(20)
turtle.end_poly()
shape.addcomponent(turtle.get_poly(), "blue", "red")
turtle.right(45)
turtle.fd(60)
screen.register_shape("octogons", shape)
octopus = Turtle(shape="octogons")
octopus.penup()
octopus.speed("slowest")
octopus.goto(300, 200)
octopus.goto(-200, 200)
screen.exitonclick()