海龟删除屏幕上的文字并重写 [英] turtle delete writing on Screen and Rewrite
问题描述
在我的代码中,在任何函数下,我都这样做:
In my code, under any function, I do:
t = turtle.Turtle()
t.write(name, font=("Arial", 11, "normal"), align="center")
但是当我换屏幕的时候,我想把这段文字删掉,改写在别的地方.我知道清除整个屏幕的简单方法".但是有没有办法只删除文字?
But when I change the screen, I want to delete this text, and rewrite it somewhere else. I know the "easy way out" of clearing the whole screen. But is there a way to delete just the writing?
我也试过在文本上画一个白色方块,但这没有用.
I have also tried drawing a white square over the text, but this did not work.
有人尝试过不同的东西吗?
Has anyone tried anything different?
推荐答案
起初,我认为这将是一个简单的问题,即返回相同的位置并使用相同的字体但使用白色墨水重写相同的文本.令人惊讶的是,这留下了一个黑色的污点,用白色覆盖了大约 10 次才让它看起来像样.但是,我找到了一个更好的解决方案,使用单独的海龟来编写您要处理的文本,并在将文本重写到新位置之前清除该海龟,屏幕上的所有其他内容,用不同的海龟绘制,仍然存在:
At first, I thought this would be a simple matter of going back to the same location and rewriting the same text in the same font but using white ink. Surprisingly, that left a black smudge and it took about 10 overwrites in white to make it presentable. However, I came upon a better solution, use a separate turtle to write the text you want to dispose of and just clear that turtle before rewriting the text in a new position, everything else on the screen, drawn with a different turtle, remains:
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()
这篇关于海龟删除屏幕上的文字并重写的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!