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'更大,超过了盒子。为什么呢?
答案 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系统,因此您需要确认它是否在两个系统上都合理。 (不是相同的,只是合理的东西!)字体存在很多问题,我不确定上述是否足够。
您可能需要根据应用程序的需要在文本框中添加一些填充。