2016-06-28 139 views
0

好的 - 我的程序中有两只乌龟。动画发生了,在那里他们碰撞在一起,但我想一个乌龟是ontop的其他的:Python Turtle Graphics - 将乌龟带到前面

Visual Image

所以,我的问题是 - 如何做到这一点 - 有一个简单的代码行如:turtle.front(),如果不是它是什么?

+1

我想如果你在绘制乌龟2后画乌龟1,黄色会自动呈现蓝色以上 – adil

+0

谢谢,我会试试看! –

回答

1

只需添加这turtle.py文件

def tofront(self, tobring): 
    newfront = tobring.clone() 
    tobring.ht() 
    return newfront 

作品正确, 所以方法 - 返回前人的精力,你龟的新克隆,在所有其他龟类的顶部。 参数tobring - 这是你目前的龟

你可以使用这个在变形点焊程序或如果是这样把它放到turtle.py文件 ,不要忘了将它添加到(你想要把到前一个)命令列表, - _tg_turtle_functions

_tg_turtle_functions = ['back', 'backward', 'begin_fill', 'begin_poly', 'bk', 
    'circle', 'clear', 'clearstamp', 'clearstamps', 'clone', 'tofront', 'color', 

我做到了克隆命令后

希望这将帮助你

+0

这个解决方案每次调整分层时都会创建一个新的乌龟,这些乌龟会四处闲逛(请参阅'turtle.turtles()')我已经为这个问题提供了一个简单的替代答案,它不涉及创建新的乌龟。 – cdlane

0

我在响应讨论这个简短地Make one turtle object always above another治所在拇指对于这个简单的情况是:

最后一个到达的是在上面

因为Python乌龟不优化掉零运动,一个简单的办法是将你想要的乌龟由零金额顶部:

import turtle 

def tofront(t): 
    t.forward(0) 

gold = turtle.Turtle("square") 
gold.turtlesize(5) 
gold.color("gold") 
gold.setx(-10) 

blue = turtle.Turtle("square") 
blue.turtlesize(5) 
blue.color("blue") 
blue.setx(10) 

turtle.onscreenclick(lambda x, y: tofront(gold)) 

turtle.done() 

蓝龟重叠黄金之一。点击任何地方,情况将会颠倒。

尽管@ Bally的解决方案有效,但我的问题是它会在您每次调整分层时创建一个新的乌龟。而这些海龟不会消失。手表turtle.turtles()成长。即使我的解决方案留下了乌龟撤消缓冲区的脚印,但我必须相信它消耗更少的资源。