У меня нубский вопрос:
Я пытаюсь создать класс «Поле», который наследует все от класса кнопок Tkinter, но также содержит дополнительный атрибут «местоположение» и метод для получения этого атрибута. Реализовав это, я создаю экземпляр нового класса «Поле» и пытаюсь заставить команду поля вызывать свою функцию, чтобы получить атрибут местоположения:
from Tkinter import *
class Field(Button):
def __init__(self, location, **k):
Button.__init__(self, **k)
self.location = location
def getLoc(self):
return self.location
root=Tk()
c = Field(2, text="Text", command = lambda: self.getLoc)
c.pack()
root.mainloop()
Появляется корневое окно с кнопкой, но при ее нажатии возникает следующая ошибка:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1470, in __call__
return self.func(*args)
File "C:\Users\PC\Desktop\test2.py", line 12, in <lambda>
c = Field(2, text="Text", command = lambda: self.getLoc)
NameError: global name 'self' is not defined
Что я должен сделать, чтобы он увидел тот факт, что я хочу, чтобы недавно созданный экземпляр «Поля» был «я», местоположение которого он должен возвращать?
заранее спасибо