Python乌龟:如何让文字的轮廓变黑,填充变白?

Python Turtle: How can I make the outline of a text black and the fill white?

这就是我目前所知道的。

turtle = turtle.Turtle()

turtle.hideturtle()
turtle.penup()

turtle.goto(-200, -300)

turtle.write("Hello World", move=False, align="left", font=("Candara", 30, "normal"))

如何让这段文字的轮廓变黑,填充变白?

老实说,我认为你做不到。一个非常便宜的解决方法是 select 等宽字体(如 Deja Vu Sans Mono)并像这样分两层打印

turtle.write("Hello World", move=False, align="left", font=("Deja Vu Sans Mono", 30, "bold"))
turtle.color("white")
turtle.write("Hello World", move=False, align="left", font=("Deja Vu Sans Mono", 30, "normal"))

这里,第一层是黑色的,粗体字,第二层是白色的,使用普通字体。这只会在字母的垂直边缘产生一个小轮廓,而不是在水平边缘产生一个小轮廓,因为字体在设置为粗体时会保持其高度。

在我们找到正确的方法之前,如果有的话,让我们模拟一个轮廓字体:

from turtle import Turtle, Screen

STRING = "Hello World!"

FONT_SIZE = 60
DELTA_SIZE = 2
FONT = ("Ariel", FONT_SIZE, "normal")
OUTLINE_FONT = ("Ariel", FONT_SIZE + 2 * DELTA_SIZE, "bold")

screen = Screen()

turtle = Turtle(visible=False)
turtle.speed('fastest')
turtle.penup()

X, Y = -100, -300

turtle.goto(X, Y)

for letter in STRING:
    turtle.color('black')
    oldx = turtle.xcor()
    turtle.write(letter, move=True, align="left", font=OUTLINE_FONT)
    newx = turtle.xcor()

    turtle.color(screen.bgcolor())
    turtle.setposition(oldx + (newx - oldx) // 2, Y + DELTA_SIZE)
    turtle.write(letter, align="center", font=FONT)
    turtle.setposition(newx, Y)

screen.exitonclick()

这会逐个字母地重新对齐,并适用于可变间距字体和等宽字体。 (不太好,也一样。)@Solvalou 在 Courier 60(等宽字体)中高于我的解决方案:

归结为品味和你想为这个问题付出多少努力。