代码之家  ›  专栏  ›  技术社区  ›  The Weird

如何删除书面文本-Python 3.6.4 Turtle

  •  1
  • The Weird  · 技术社区  · 6 年前

    我是Python 3.6.4的新手,我正在用海龟创建动画。我在从屏幕上删除一行文字时遇到问题。这是我的密码。

    wn.bgcolor('purple')
    time.sleep(1)
    turtle.write("Welcome", font=("Lucida Sans Unicode", 16, "normal"))
    time.sleep(1)
    wn.bgcolor('black')
    
    4 回复  |  直到 6 年前
        1
  •  1
  •   Jongware    6 年前

    Turtle提供了一些组件来分别处理彼此。

    在你的情况下,它是一支钢笔 RawTurtle类 ,可以绘制和清除自身。

    你想看RawTurtle班吗?请参见中的说明 https://docs.python.org/2/library/turtle.html#turtle.RawTurtle

    下面是一些示例代码,您可以轻松地进行后续操作。

    # First, make a turtle object
    # Second, Call a .getpen() method from the instance you created before.
    # Third, Write Some Text, in my case, it is 'helloworld'
    # Finally, clear what you write on the screen. 
    
    import turtle
    sample = turtle.Turtle()
    pen = sample.getpen()
    # 'Helloworld" text will show up on your screen
    pen.write("Helloworld") 
    # 'Helloworld' will be disapeared as you type it on console.
    pen.clear()
    
        2
  •  0
  •   IMD    6 年前

    你可以看看这个网站 https://docs.python.org/2/library/turtle.html 更多信息

    信息,但我的想法是你应该

        turtle.clear()
    

    然后你应该在没有文本的情况下重做整个程序。

    我希望这是有益的。

        3
  •  0
  •   Marcus Müller    6 年前

    你不能。

    你可以 turtle.clear() 整个屏幕,然后重做你所做的事情,直到你写下文本为止;你可以在你放文本的地方放一个白色的方块,但是乌龟不能“撤消”。

    海龟模块实际上只是画图 像素 在画布上。没有关于所做工作的内部信息,只有画布,现在在绘制的地方有不同的颜色。换言之,这就像你在纸上用笔画画一样:纸上笔碰到的地方有不同的颜色,但要撤消你写的东西,你需要拿出橡皮擦,把你写的地方擦干净。或者,你可以拿一张新的纸,从头开始,省略你写的部分。在电脑中,你经常会这样做——画图只需电脑很短的时间,如果你将海龟的速度设置为“最快”,并使其不可见,你甚至看不到屏幕在其间被清除。

    好消息是,如果你在这一点上,你可能非常擅长使用海龟,所以这可能是一个好消息,可以真正习惯于存储动作并稍后重做它们的方法,这样你就可以实现 乌龟清除() 还有我上面提到的重做方法。

    一种适合初学者的方法是:

    actions = []
    
    actions.append( ( "pen down", ) )
    actions.append( ( "go to" , 10 , 8) )
    actions.append( ( "write", "funny text") ) 
    actions.append( ( "go to" , 8 , 2) )
    actions.append( ( "sleep", 5) )
    actions.append( ( "clear", ) )
    
    for action in actions:
        if action[0] == "pen down":
            turtle.pendown()
        elif action[0] == "go to":
            turtle.goto(action[1], action[2])
        elif action[0] == "sleep":
            time.sleep(action[1])
        elif action[0] == "clear":
    ……
    

    你明白了。

    然后,您可以删除第三步(注意!Python从0开始计算元素!)通过做一个简单的

    del actions[2]
    

    正如您所想象的,有一个“命令列表”的更酷的方法,而不是尝试在每一步都将命令字符串与一组命令进行比较,但它们需要一些有关字典和可调用项的知识,因此,我认为这将是一个很好的开始。

        4
  •  0
  •   cdlane    6 年前

    Python 3 turtle可以撤消操作。你通常不想 .clear() 因为它能清除海龟所做的一切。通常,我会用一只专用的海龟发短信,并把它停在需要的地方。那就吃吧 .write() .undo() 根据需要:

    import time
    from turtle import Turtle, Screen
    
    screen = Screen()
    turtle = Turtle(visible=False)
    
    screen.bgcolor('purple')
    time.sleep(1)
    turtle.write('Welcome', align='center', font=('Lucida Sans Unicode', 32, 'normal'))
    time.sleep(1)
    turtle.undo()
    
    screen.mainloop()