【问题标题】:How to change size of turtle?如何改变乌龟的大小?
【发布时间】:2016-11-01 08:55:14
【问题描述】:

每次按键盘上的x 时,我都会尝试将窗口中的乌龟尺寸加倍。我尝试使用.turtlesize(2,2,2),但这是不对的。每次按下键时我都需要加倍,因此如果海龟大小为(1,1,1),则每次按下x 时,它将变为(2,2,2),然后变为(4,4,4),依此类推。

这是我目前所拥有的:

import turtle
turtle.setup(500,500)
wn = turtle.Screen()
wn.title("Commands")
wn.bgcolor("black")

tess = turtle.Turtle()
tess.shape("triangle")
tess.color("red")
tess.left(90)

def increaseSize():
    size = tess.turtlesize()
    increase = tuple([2 * num for num in size])
    tess.turtlesize(increase) #this is where the error occurs

wn.onkey(increaseSize, "x")
wn.listen()

【问题讨论】:

  • 你得到什么具体的错误信息?

标签: python resize turtle-graphics


【解决方案1】:

Turtle 对象的默认大小为20 像素,相当于调整Turtle 大小时1 的比率。

例如:

import turtle

tess = turtle.Turtle()
print(tess.shapesize())

输出:

(1.0, 1.0, 1)

元组中的前两个1.0s代表Turtle的宽度和高度是多少个单位20像素,最后一个1代表Turtle的轮廓宽度。 如果您只将一个参数传递到tess.color() 括号中,您将无法看到大纲,因为默认情况下没有大纲。

要增加Turtle 的大小,只需将您希望Turtle 的每个维度的20 像素数传入tess.shapesize()tess.turtesize()

import turtle

tess = turtle.Turtle()
tess.shapesize(2, 3, 1) # Sets the turtle's width to 60px and height to 90px

另一个答案指出 turtlesize 函数不接受 大批;它接受ints 或floats,所以你需要unpack the tuple with a * 当您将元组传递给函数时。

在您的 increaseSize 函数中,tuple[] 包装器不是必需的, 只会浪费效率。只需使用()

def increaseSize():
    size = tess.turtlesize()
    increase = (2 * num for num in size)
    tess.turtlesize(*increase)

在您的代码之上有

turtle.setup(500,500)
wn = turtle.Screen()

由于您定义了Screen 对象wn,因此使用wn.setup() 而不是turtle.setup() 更简洁:

wn = turtle.Screen()
wn.setup(500,500)

大家一起:

import turtle

wn = turtle.Screen()
wn.setup(500,500)

tess = turtle.Turtle("triangle")
tess.color("red")
tess.left(90)

def increaseSize():
    size = tess.turtlesize()
    increase = (2 * num for num in size)
    tess.turtlesize(*increase)

wn.onkey(increaseSize, "x")
wn.listen()

输出:

【讨论】:

    【解决方案2】:

    改变这一行:

    tess.turtlesize(increase)
    

    改为:

    tess.turtlesize(*increase)
    

    turtlesize() 想要三个单独的值,但您传递了三个值的一个元组,因此我们需要将该元组分布在参数列表中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-24
      • 2016-06-20
      • 2019-09-17
      • 1970-01-01
      • 2022-08-22
      • 1970-01-01
      • 2021-11-09
      • 2015-01-30
      相关资源
      最近更新 更多