Python Turtle计量单位

时间:2018-04-01 07:09:54

标签: python turtle-graphics

当我们实例化一个乌龟对象时,我们可以画一个圆圈。我想知道circle()方法的radius参数。

import turtle
myTurtle = turtle.Turtle()
myTurtle.circle(50)

此参数的测量单位是多少?

半径是等于50像素还是50英寸?

4 个答案:

答案 0 :(得分:2)

turtle.setup的文档表明,如果表示为整数,则大小参数是像素,如果表示为浮点数,则是屏幕的一部分。

答案 1 :(得分:1)

从文档的前几行可以看出,forward方法使用单位像素,因为文档中没有使用其他单位,所以可以推断所有方法都使用像素。

编辑:在查看源代码形式龟之后,我100%确定它使用像素作为单位,因为它直接将位置添加到位置。

答案 2 :(得分:0)

这取决于我们是在测量屏幕上的图像,还是通过底层tkinter画布获得的打印PostScript图像。

我的戴尔显示器的像素间距为0.282mm,因此我希望每英寸看到90个点。如果乌龟画一个半径为45像素的圆圈,我在屏幕上测量的是一个直径为1英寸的圆圈。

然而,如果我打印该图像,并关闭任何打印缩放,我将不会得到1“打印的圆圈,但更大的东西。为了获得正确打印的圆圈,乌龟需要绘制半径为36,因为PostScript转换的基本衡量标准似乎基于 points (每英寸72英寸):

from turtle import Turtle, Screen

screen = Screen()
screen.setup(400, 600)

tortoise = Turtle()

tortoise.circle(36)

canvas = screen.getcanvas()

canvas.postscript(file="circle.ps")

screen.exitonclick()

虽然此圆圈在我的屏幕上大约为3/4“,但打印机上的PostScript输出为1”。 (确保关闭所有自动缩放功能并打印@ 100%)

显示器上图像的实际尺寸取决于像素间距。尽管tkinter可以在固定大小的点上进行显示和打印,但Python龟仅适用于可变大小的像素以供显示。确定显示器的像素间距后,您可以使用自己的缩放系数,或者:

turtle.setworldcoordinates(llx, lly, urx, ury)

配置您自己的缩放:

from turtle import Turtle, Screen

PIXEL_PITCH = 0.282  # mm
MM_PER_INCH = 25.4
DOTS_PER_INCH = int(1 / (PIXEL_PITCH / MM_PER_INCH))

screen = Screen()
screen.setup(4 * DOTS_PER_INCH, 5 * DOTS_PER_INCH)
screen.setworldcoordinates(-2, -2.5, 2, 2.5)  # convert to inches

tortoise = Turtle()

tortoise.circle(0.5)  # 1/2" radius, one inch diameter on my screen

screen.exitonclick()

在PostScript转换过程中,如果没有额外的工作来切换单位或在打印对话框中使用正确的缩放系数,那么在屏幕上应该相当准确,但无法正确打印。

答案 3 :(得分:-1)

使用circle()函数:

circle(radius, extent=None, steps=None)

在此处查看更多内容:https://docs.python.org/2/library/turtle.html#turtle.circle

是的,它是半径作为像素,是函数的第一个参数。