AttributeError: объект 'tkapp' не имеет атрибута 'drawRectangle'

Я пытался заставить свою оболочку Tkinter (специализированную для создания игры) работать, но она продолжает выдавать ошибку, когда пытается нарисовать прямоугольник. Проследить:
Traceback (most recent call last): File "C:\Users\William\Dropbox\IT\Thor\test.py", line 7, in <module>
aRectangle = thorElements.GameElement(pling,rectangleTup=(True,295,195,305,205,"blue"))
File "C:\Users\William\Dropbox\IT\Thor\thorElements.py", line 79, in __init__
self.rectangle = self.area.drawRectangle(self)
File "C:\Python33\lib\tkinter\__init__.py", line 1867, in __getattr__
return getattr(self.tk, attr)
AttributeError: 'tkapp' object has no attribute 'drawRectangle'

Разделы кода, которые имеют отношение к вопросу,

class GameElement():
    def __init__(self,area,rectangleTup=(False,12,12,32,32,"red")):
        self.area = area
        self.lineTup = lineTup #Tuple containing all the data needed to create a line
        if self.lineTup[0] == True:
            self.kind = "Line"
            self.xPos = self.lineTup[1]
            self.yPos = self.lineTup[2]
            self.line = self.area.drawLine(self)

А вот фактический метод, который рисует прямоугольник на холсте (в классе, который управляет виджетом Canvas), ранее в том же файле:

class Area():
    def drawLine(self,line):
        topX = line.lineTup[1]
        topY = line.lineTup[2]
        botX = line.lineTup[3]
        botY = line.lineTup[4]
        colour = line.lineTup[5]
        dashTuple = (line.lineTup[6][0],line.lineTup[6][1])
        return self.canvas.create_line(topX,topY,botX,botY,fill=colour,dash=dashTuple)
        print("Drew Line")

Весь вклад с благодарностью.

1 ответ

Сообщение об ошибке должно быть самоочевидным. Когда это говорит AttributeError: 'tkapp' object has no attribute 'drawRectangle', это означает, что вы пытаетесь сделать tkapp.drawRectangle или же tkapp.drawRectangle(...), но tkapp не имеет атрибута или метода с именем drawRectangle,

Поскольку ваш код не показывает, где вы создаете tkapp или как вы его создали, или куда вы звоните drawRectangle, мы не можем знать, в чем корень проблемы. Скорее всего, это одно из следующих:

  1. tkapp не то, что вы думаете, это
  2. у вас есть опечатка, и хотел позвонить drawLine скорее, чем drawRectangle,
  3. вы намеревались реализовать drawRectangle но не сделал
Другие вопросы по тегам