首页 > 解决方案 > 是否可以相对于屏幕尺寸设置海龟的位置

问题描述

假设我的屏幕尺寸为 10、10

和 2, 2 的位置

如果屏幕尺寸更改为 5, 5

位置将是 1, 1

或者也许有办法改变相对于屏幕分辨率?

标签: pythonturtle-graphicspython-turtle

解决方案


turtle 自动设置一个ScrolledCanvasso,resize 窗口将尝试将事物保持在大致相同的位置,但有限制。

你可以把你的乌龟放在一个比例位置,然后从那个比例开始。

只需将您的尺寸和动作视为窗口的一部分。使用对角线作为主要维度,然后从那里开始。

这本质上就是可伸缩矢量图形——https: //en.wikipedia.org/wiki/Vector_graphics

#! /usr/bin/python3

from math import sqrt
from random import uniform
from turtle import Turtle, Screen
turtle, screen = Turtle(), Screen()

turtle.penup()
turtle.speed( 0 )

red, green, blue = 0.95, 0.95, 0.95
screen.bgcolor( red, green, blue )

##Width, Height = 300, 300
Width, Height = 600, 600

##  Pythag.  A squared +B squared = C squared
Diag = sqrt( (Width *Width) +(Height *Height) )
stepsize = Diag /100

screen.screensize( Width,  Height )  ##  canvas size to begin with

##  window frame.  by adding a few pixels, you avoid scrollbars
screen.setup( width = Width *1.03,  height = Height *1.03 )

for i in range( 50 ):  ##  clouds
    light = uniform( 0.8, 1 )
    turtle.pencolor( light, light, light )
    turtle.pensize( stepsize *uniform( 0.5, 5 ) )
    turtle.setheading( uniform( 0.0, 360 ) )
    turtle.goto( Width *uniform( -0.5, 0.5 ),  Height *uniform( 0.0, 0.5 ) )
    turtle.pendown()  
    turtle.forward( stepsize *uniform( 0.1, 1 ) )
    turtle.penup()

red, green, blue = 0.0, 0.25, 0.5
for i in range( 25 ):  ##  scribble water
    green += 0.01
    blue += 0.02
    water_level = Height *0.15 +(i *stepsize)
    turtle.goto( -Width *0.55, -water_level )
    turtle.pencolor( red, green, blue )
    turtle.pensize( stepsize +i )
    turtle.pendown()
    turtle.goto( Width *0.55, -water_level )
    turtle.penup()

red, green, blue = 0.95, 0.95, 0.95
turtle.goto( Width *0.25,  Height *0.333 )
turtle.setheading( 45 )
turtle.pendown()
for i in range( 20 ):  ##  draw sun
    red -= 0.0111
    green -= 0.02
    blue -= 0.0225
    turtle.pencolor( red, green, blue )
    turtle.pensize( stepsize *(30 -i) )
    turtle.forward( stepsize /5 )

turtle.hideturtle()
screen.exitonclick()

##  eof  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

推荐阅读