图片中的海龟不会在另一只海龟的邮票上画

2024-09-30 18:31:27 发布

您现在位置:Python中文网/ 问答频道 /正文

这段代码设置了一个海龟放置邮票的背景。另一只海龟(其形状来自导入的图像文件)在背景上移动。但当第二只海龟被放在第一只海龟的邮票上时,它就不可见了。如果我把移动的海龟做成一个标准的形状,例如圆形,那么它就保持可见。所以,使用海龟的导入图像有点奇怪,每当海龟出现在邮票上时,它就会消失

#!/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的(我可以在文章的底部看到它,但它非常小)

有人能解释一下为什么会这样,以及如何绕过它吗

player.gif


Tags: fromimportforsleepgifmover形状player
1条回答
网友
1楼 · 发布于 2024-09-30 18:31:27

我不确定这是否是一个错误或微妙之处,但图章不是屏幕上的像素像dot()stamp()函数返回一个允许有选择地删除它们的ID。我的猜测是,这是一个层次的问题与潜在的tkinter。在turtle中,如果您有分层问题,有时以不同的顺序进行操作会有所帮助:

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()

enter image description here

从长远来看,time.sleep()不是基于事件的海龟的朋友。对于这样的例子,这是很好的,但是任何更多的事情,它都会导致更多的问题,而不是解决问题。查看屏幕的ontimer()方法

相关问题 更多 >