Хотя @ xen20 объясняет суть решения, я хочу убедиться, что вы также знаете методы window_width()
и window_height()
:
import sys
import turtle
width, height = turtle.window_width(), turtle.window_height()
minX, maxX = -width/2, width/2
minY, maxY = -height/2, height/2
def repeated_code():
turtle.forward(20) # keep moving forward until we're out of window
if not minX <= turtle.xcor() <= maxX or not minY <= turtle.ycor() <= maxY:
turtle.bye()
sys.exit("Finished.") # if we don't exit() a Terminator will be raised
turtle.ontimer(repeated_code, 100) # repeat every 1/10th of a second
repeated_code()
turtle.mainloop() # turn over control to tkinter event loop
Визуально вы найдетеminX
, maxX
и т. Д. Не идеальны из-за хрома (границы, строка заголовка, полосы прокрутки и т. Д.) В окне.Вы найдете, что это хуже в измерении Y из-за размера строки заголовка.Я не знаю, как внутри черепахи можно рассчитать эту разницу, кроме догадок.Возможно, решение найдено в базовой библиотеке tkinter.