为什么我的Turtle写在mac和pc上显得不同?

时间:2018-04-19 03:36:35

标签: fonts size turtle-graphics

from turtle import *

def hospital():
    setheading(0)
    forward(55)
    pendown()
    color("black", "white")
    begin_fill()
    for _ in range(2):
        backward(130)
        right(90)
        backward(20)
        right(90)
    end_fill()
    penup()
    setheading(180)
    forward(105)
    write("HOSPITAL", font=("Verdana", 14, "bold"))

hospital()

当我在我的Mac上运行“医院”这个词时,完全适合盒子里面。但是,在我的电脑上运行时,' HOSPITAL'更大,超过了盒子。为什么呢?

1 个答案:

答案 0 :(得分:0)

字体大小仅指定高度。您已经为盒子使用了固定宽度,而不是实际测量字体所需的宽度。并且您为盒子使用固定高度,而不是计算 屏幕上显示的字体高度。

字体高度以衡量,但是龟只知道如何绘制像素,因此您还需要在两者之间进行转换。这里有一些代码试图在绘制盒装文本时进行测量:

from turtle import Turtle, Screen

FONT_SIZE = 14
FONT = ('Verdana', FONT_SIZE, 'bold')

POSITION = (55, 0)

PIXELS_PER_INCH = 90  # set this based on *your* display
POINTS_PER_INCH = 72  # what the size of a font represents

X, Y = 0, 1

def box_text(turtle, text):

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

    screen_font_size = PIXELS_PER_INCH * (FONT_SIZE / POINTS_PER_INCH)

    lower_left = (2 * start[X] - end[X], start[Y])
    upper_right = (end[X], start[Y] + screen_font_size)

    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()

screen = Screen()

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

box_text(marker, "HOSPITAL")

screen.mainloop()

我不使用Windows系统,因此您需要确认它是否在两个系统上都合理。 (不是相同的,只是合理的东西!)字体存在很多问题,我不确定上述是否足够。

enter image description here

您可能需要根据应用程序的需要在文本框中添加一些填充。