如何知道python中龟图形上特定文本的像素大小?

时间:2017-08-05 01:13:46

标签: python python-3.x turtle-graphics

作为标题,当我执行以下代码时


import turtle
turtle.write("some text")

我想知道海龟图形画布上字符串some text的整个尺寸(包括高度和宽度)。
我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

字体大小只会告诉您 一半 您需要知道的内容,即高度:

  

字体的大小通常被认为是距离顶部的距离   最低字符底部的最高字符。

来自FontSize.html

但我们可以通过将move=的{​​{1}}选项设置为turtle.write()来获得宽度。这是一个例子,我想在我刚刚绘制的文字周围画一个紧凑的框:

True

enter image description here

现在,首先绘制框,填充框,然后将文本绘制到框中是一个更难的问题。使用的技巧是在屏幕外绘制文本:

from turtle import Turtle, Screen

TEXT = "Penny for your thoughts"  # arbitrary text
POSITION = (150, 150)  # arbitrary position

FONT_SIZE = 36  # arbitrary font size
FONT = ('Arial', FONT_SIZE, 'normal')

X, Y = 0, 1

def box(turtle, lower_left, upper_right):
    """ Draw a box but clean up after ourselves """

    position = turtle.position()
    isdown = turtle.isdown()

    if isdown:
        turtle.penup()
    turtle.goto(lower_left)
    turtle.pendown()
    turtle.goto(upper_right[X], lower_left[Y])
    turtle.goto(upper_right)
    turtle.goto(lower_left[X], upper_right[Y])
    turtle.goto(lower_left)

    turtle.penup()
    turtle.setposition(position)
    if isdown:
        turtle.pendown()

screen = Screen()

marker = Turtle(visible=False)
marker.penup()
marker.goto(POSITION)

start = marker.position()
marker.write(TEXT, align='center', move=True, font=FONT)
end = marker.position()

# Since it's centered, the end[X] - start[X] represents 1/2 the width
box(marker, (2 * start[X] - end[X], start[Y]), (end[X], start[Y] + FONT_SIZE))

screen.exitonclick()

enter image description here

另一种方法是首先在背景颜色中绘制文本,测量,绘制和填充框,最后以不同的颜色重绘文本。

答案 1 :(得分:-1)

turtle.write的默认字体是'Arial',字体大小为8px,如文档https://docs.python.org/3/library/turtle.html#turtle.write中所述。

文本的高度和宽度取决于font参数。

答案 2 :(得分:-1)

虽然布兰登几乎给出了答案,但让我举个例子:

>>>>import turtle
>>>>turtle.write('hey hello this is DSP',font=('consolas',8,'bold'))

这可以完成你的工作,Consolas是字体类型,8是字体的大小,粗体是字体类型。除了大胆之外,您还可以使用斜体或正常。