乌龟删除写在屏幕和重写

时间:2016-01-16 03:27:05

标签: python turtle-graphics

在我的代码中,在任何函数下,我都这样做:

t = turtle.Turtle()
t.write(name, font=("Arial", 11, "normal"), align="center")

但是当我更改屏幕时,我想删除此文本,并在其他地方重写它。我知道"简单的出路"清除整个屏幕。但有没有办法删除写作?

我也尝试在文本上画一个白色正方形,但这不起作用。

有没有人尝试过不同的东西?

2 个答案:

答案 0 :(得分:3)

起初,我认为回到同一个位置并使用相同的字体重写相同的文本但使用白色墨水是一件简单的事情。令人惊讶的是,这留下了一个黑色的污迹,并且大约需要10次白色覆盖以使其呈现。然而,我找到了一个更好的解决方案,使用一个单独的乌龟来编写你要处理的文本,然后在重新写入新位置的文本之前清除那只乌龟,屏幕上用其他乌龟绘制的其他内容仍然是:

import turtle
import time

def erasableWrite(tortoise, name, font, align, reuse=None):
    eraser = turtle.Turtle() if reuse is None else reuse
    eraser.hideturtle()
    eraser.up()
    eraser.setposition(tortoise.position())
    eraser.write(name, font=font, align=align)
    return eraser

t = turtle.Turtle()
t.hideturtle()
t.up()

t.goto(-100,100)
t.write("permanent", font=("Arial", 20, "normal"), align="center")

t.goto(100,100)
eraseble = erasableWrite(t, "erasable", font=("Arial", 20, "normal"), align="center")

time.sleep(1)

eraseble.clear()

t.goto(-100, -100)
erasable = erasableWrite(t, "erasable", font=("Arial", 20, "normal"), align="center", reuse=eraseble)

turtle.done()

答案 1 :(得分:1)

您也可以清除这只乌龟,而不是清除整个屏幕。不确定这是否符合您的要求,但您可能想尝试一下。我添加了第二只乌龟来演示屏幕的其余部分不受影响。

import turtle
import time

name = "first text"

t1 = turtle.Turtle()
t1.setposition(0, 0)
t1.write(name, font=("Arial", 11, "normal"), align="center")

t2 = turtle.Turtle()
t2.setposition(0, 30)
t2.write(name, font=("Arial", 11, "normal"), align="center")

time.sleep(1)
name = "new value for name 1"
t1.clear()
t1.write(name, font=("Arial", 11, "normal"), align="center")