gpt4 book ai didi

python - 图像中的 turtle 不会覆盖另一只 turtle 的印记

转载 作者:太空宇宙 更新时间:2023-11-03 20:38:13 27 4
gpt4 key购买 nike

这段代码设置了一只 turtle 放置的邮票背景。另一只 turtle (其形状来自导入的图像文件)在背景上移动。但是,只要第二只 turtle 位于第一只 turtle 放置的图章上方,它就不可见。如果我将移动的 turtle 设为标准形状之一,例如圆形,那么它就会保持可见。因此,使用导入的 turtle 图像会有点奇怪,这会导致它在其中一张邮票上消失时消失。

#!/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

最佳答案

我不确定这是否是一个错误或微妙之处,但图章不像 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() 并不是基于事件的 turtle 的 friend 。像这样的例子很好,但如果再多的话,它会导致比它解决的问题更多的问题。查看屏幕的 ontimer() 方法。

关于python - 图像中的 turtle 不会覆盖另一只 turtle 的印记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57020518/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com