擅长:python、mysql、java
<p>根本问题是<code>CanvPlay.coords(Shot1)</code>返回的是空列表或无,而您的代码没有准备好处理这种情况。例如,如果删除要获取其坐标的项,则可能会发生这种情况。在</p>
<p>实际上,<code>ShotMove</code>函数有删除快照的代码,然后它继续尝试再次移动快照。如果删除快照,则可能不想再次使用<code>after</code>来移动快照。也许简单的解决方案是将ShotMove函数改为如下所示:</p>
<pre><code>def ShotMove():
global DxShot, DyShot
x1,y1= CanvPlay.coords(Shot1) #here's where I'm getting the error...
if y1+DyShot<=0:
CanvPlay.delete(Shot1)
print("Shot deleted")
else:
CanvPlay.coords(Shot1, x1+DxShot, y1+DyShot)
CanvPlay.after(3,ShotMove)
</code></pre>
<p>代码中还有另一个问题,即多次调用<code>mainloop</code>。一般来说,您应该只调用<code>mainloop</code>一次。这可能是您的程序在几秒钟后变得滞后和错误的部分原因。在</p>