python - 是否可以相对于屏幕尺寸设置海龟的位置
问题描述
假设我的屏幕尺寸为 10、10
和 2, 2 的位置
如果屏幕尺寸更改为 5, 5
位置将是 1, 1
或者也许有办法改变相对于屏幕分辨率?
解决方案
turtle 自动设置一个ScrolledCanvas
so,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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
推荐阅读
- python - 如何遍历字典列表并将值提取到单个字符串?
- python - 无法通过 multiprocessing.Pool 将文件句柄和锁定传递给进程?
- javascript - 从文件阅读器中的承诺对象获取价值
- javascript - date-fns 将字符串日期格式 'MMM-DD-YYYY' 转换为日期
- python - sklean SVM / SVC 总是为任何给定的输入预测相同的类
- sql - 如果不存在 cid_cod 如何将一个插入添加到更新中
- python - PyCharm 调用图总是在加载,如何解决?
- excel - 如何遍历数据透视表切片器,排除没有数据的项目?
- python - 使用 Pything 访问 Selenium 中的 webelement 列表中的 webelement
- javascript - React - 钩子,助手和实用程序之间的区别