【发布时间】:2015-04-23 22:12:43
【问题描述】:
这个程序应该在画布上放置一个精灵,供用户使用左右箭头键控制,但我不断收到元组索引超出范围错误,我的程序中没有任何元组。我知道我正确导入了图片,所以它可能与按键事件有关。
#4/22/15
#Test game, user controlled sprite
import random
from Tkinter import *
import Tkinter
from PIL import Image, ImageTk
root = Tk()
root.geometry('700x600')
canvas = Canvas(root,width=700,height=600,bg='white')
canvas.place(x=0,y=0)
class Character_sprite(object):
'''Creates the users sprite and handles the events'''
def __init__(self):
self.im = Image.open('grey_mario_mushroom_sprite.png')
self.tkimage = ImageTk.PhotoImage(self.im)
self.char_sprite = canvas.create_image(image=self.tkimage)
def moveLeft(event):
'''Handles the left arrow key press event, moves char_sprite to the left'''
canvas.move(self.char_sprite,-20,0)
canvas.update()
def moveRight(event):
'''Handles the right arrow key press event, moves the char_sprite to the right'''
canvas.move(self.char_sprite,20,0)
canvas.update()
root.bind('<Left>', Character_sprite.moveLeft)
root.bind('<Right>', Character_sprite.moveRight)
Character_sprite()
root.mainloop()
这是错误:
Traceback (most recent call last):
File "C:\Users\Calvin\Documents\Python Programs\Test_game_example.py", line 57, in <module>
Character_sprite()
File "C:\Users\Calvin\Documents\Python Programs\Test_game_example.py", line 36, in __init__
self.char_sprite = canvas.create_image(image=self.tkimage)
File "C:\Python27\lib\lib-tk\Tkinter.py", line 2310, in create_image
return self._create('image', args, kw)
File "C:\Python27\lib\lib-tk\Tkinter.py", line 2294, in _create
cnf = args[-1]
IndexError: tuple index out of range
请帮忙!
【问题讨论】:
-
您能否向我们展示实际的异常(如果已打印,则带有完整的回溯),而不仅仅是向我们描述它吗?另外,你什么时候得到异常?在至少不知道它出现在哪一行的情况下,解决这个问题的唯一方法是阅读所有代码并尝试猜测您可能在哪里犯了错误。
-
同时,这是对类的一种非常奇怪的用法。您根本没有真正将
Character_sprite用作一个类,而只是将三个单独的函数转储到其中的垃圾箱。 -
我添加了错误以更清楚地说明问题所在