此代码设置了一只乌龟放置的邮票的背景。另一只乌龟(其形状来自导入的图像文件)在背景上四处移动。但是,只要将第二只乌龟放在第一只乌龟放置的印章上就看不到。如果我将移动的乌龟设为标准形状之一(例如圆形),则它仍然可见。因此,为乌龟使用导入的图像有些奇怪,这会导致它在贴在其中一张图章的顶部时消失。
#!/usr/bin/python3
from turtle import *
from time import sleep
scr = Screen()
scr.register_shape('player.gif')
mover = Turtle()
bgnd = Turtle()
bgnd.color('blue')
mover.shape('player.gif')
bgnd.shape('square')
for i in range(5):
bgnd.goto(i*20,0)
bgnd.stamp()
for i in range(5):
mover.goto((8-i)*20,0)
sleep(1)
随附的图像是我称为player.gif的图像(我可以在文章底部看到它,但是它很小)。
任何人都可以帮助解释为什么会这样以及如何解决吗?
答案 0 :(得分:0)
我不确定这是bug还是微妙之处,但图章不是dot()
这样的屏幕上的像素-stamp()
函数返回的ID可以有选择地将其删除。我的猜测是这是基础tkinter的分层问题。在乌龟中,如果遇到分层问题,有时可以按不同的顺序进行操作:
from turtle import Screen, Turtle
from time import sleep
background = Turtle()
background.hideturtle()
background.color('blue')
background.shape('square')
for i in range(5):
background.goto(i * 20, 0)
background.stamp()
screen = Screen()
screen.register_shape('player.gif')
mover = Turtle()
mover.shape('player.gif')
for i in range(5):
mover.goto((8 - i) * 20, 0)
sleep(1)
screen.exitonclick()
从长远来看,time.sleep()
不是基于事件的乌龟的朋友。像这样的例子很好,但仅此而已,它将导致更多的问题,无法解决。查看屏幕的ontimer()
方法。