我在制作使用Tkinter的游戏时遇到了一些麻烦。拍摄约50次后程序崩溃并出现错误:致命的Python错误:无法从堆栈溢出中恢复。
我不确定导致这种情况的原因,但我知道这部分代码。
self.p1_shot_out = False
def p1_shoot(event):
if self.p1_shot_out == True:
self.canvas.delete(self.laser_p1)
self.laser_p1 = self.canvas.create_image(50, self.y_p1 +50, image=self.p1_laser)
self.x_p1_laser = 50
self.p1_shot_out = True
time.sleep(.009)
p1_shoot_move()
def p1_shoot_move():
if self.x_p1_laser <= 900:
self.canvas.move(self.laser_p1,5,0)
self.x_p1_laser += 5
self.canvas.update()
time.sleep(.009)
p1_shoot_move()
根据要求打印到终端的确切内容:
致命的Python错误:无法从堆栈溢出中恢复。
当前主题0x00001d54(最近一次调用): 文件&#34; D:\ Python34 \ lib \ tkinter__init __。py&#34;,更新中的第963行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第148行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot中的第140行 文件&#34; D:\ Python34 \ lib \ tkinter__init __。py&#34;,调用中的第1487行 文件&#34; D:\ Python34 \ lib \ tkinter__init __。py&#34;,更新中的第963行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第148行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot中的第140行 文件&#34; D:\ Python34 \ lib \ tkinter__init __。py&#34;,调用中的第1487行 文件&#34; D:\ Python34 \ lib \ tkinter__init __。py&#34;,更新中的第963行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第148行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot中的第140行 文件&#34; D:\ Python34 \ lib \ tkinter__init __。py&#34;,调用中的第1487行 文件&#34; D:\ Python34 \ lib \ tkinter__init __。py&#34;,更新中的第963行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第148行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot中的第140行 文件&#34; D:\ Python34 \ lib \ tkinter__init __。py&#34;,调用中的第1487行 文件&#34; D:\ Python34 \ lib \ tkinter__init __。py&#34;,更新中的第963行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第148行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot中的第140行 文件&#34; D:\ Python34 \ lib \ tkinter__init __。py&#34;,调用中的第1487行 文件&#34; D:\ Python34 \ lib \ tkinter__init __。py&#34;,更新中的第963行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第148行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 文件&#34; C:\ Users \ Caleb \ workspace \ CS 108 \ src \ project \ Controller.py&#34;,p1_shoot_move中的第150行 ...
感谢任何帮助,谢谢!
答案 0 :(得分:2)
好的,这看起来像是有人参加了Coursera Interactive python课程,因此他们的代码没有在正常的解释器中运行(因此缺少递归限制异常)。
问题在于:
if self.x_p1_laser <= 900:
self.canvas.move(self.laser_p1,5,0)
self.x_p1_laser += 5
self.canvas.update()
time.sleep(.009)
p1_shoot_move() # Potential infinite self-recusion
将其作为循环重做
while self.x_p1_laser <= 900:
self.canvas.move(self.laser_p1,5,0)
self.x_p1_laser += 5
self.canvas.update()
time.sleep(.009)