Python乌龟,改变可见部分

Python Turtle, change visible part

在canvas上画了两个点,右边一个在(100,0),左边一个在(-1000,0)。初始化程序后,原来的屏幕位置(可见部分) 在右边的点附近,就像 pic1 show

图片 1:[1]: https://i.stack.imgur.com/KtPRN.png

现在我想使用坐标 将屏幕(可见部分)移动到左点 以便我可以看到它(图 2)。我应该怎么做?

图2:https://i.stack.imgur.com/Rtfrv.png


def drawDot(x):
    penup()
    goto(x, 0)
    pendown()
    dot('pink')
    write(x)


b = -1000 #left dot(-1000,0)

a = 100   #right dot(100,0)

speed(0)
delay(0)
tracer(0, 0)
hideturtle()
screensize(500,500)

color('red')
bgcolor('black')

drawDot(a)
drawDot(b)
done()

我相信以下内容符合您的描述。当 window 打开时,它以 (0, 0) 为中心,点 a 在右侧可见,点 b 根本不可见。当您单击 window 时,它会滚动以使 window 以点 b:

为中心
from turtle import Screen, Turtle

WINDOW_WIDTH, WINDOW_HEIGHT = 500, 500
CANVAS_WIDTH, CANVAS_HEIGHT = 3000, 1000

def drawDot(x):
    turtle.penup()
    turtle.setx(x)
    turtle.dot('pink')
    turtle.write(x)

def scrollToDot(x, y):  # unused arguments
    canvas = screen.getcanvas()
    # tkinter has a different coordinate system
    # we have to describe left edge of scrolled
    # window as percentage in its coordinates:
    screen_center = CANVAS_WIDTH / 2
    dot_center = screen_center + b
    left_edge = dot_center - screen.window_width() / 2
    canvas.xview_moveto(left_edge / CANVAS_WIDTH)  # percentage

a = 100  # right dot(100, 0)
b = -1000 # left dot(-1000, 0)

screen = Screen()
screen.setup(WINDOW_WIDTH, WINDOW_HEIGHT)  # What we see
screen.screensize(CANVAS_WIDTH, CANVAS_HEIGHT)  # What there is
screen.bgcolor('black')

turtle = Turtle()
turtle.hideturtle()
turtle.speed('fastest')
turtle.color('red')

drawDot(a)
drawDot(b)

screen.onclick(scrollToDot)
screen.mainloop()

为此,我们必须访问 turtle 的 tkinter Canvas 基础。但是,Canvas 坐标系与 turtle 的坐标系不同,因此我们必须按照代码注释中的说明进行调整。