Если вы не хотите бытьFrame
, но вместо этого хочет собственного один, вы не должны» t наследуется от него. Просто хранить один в качестве атрибута:
class Black(object): # note no inheritance from Frame
def __init__(self, parent, width, height,)
# instance of calling its __init__ with self,
# we just construct a Frame and store it
self.frame = Frame(parent, bg='black')
self.width = width
self.height = height
Теперь, чтобы позвонить Frame
методы, вы self.frame.spam()
, не self.spam()
и так далее.
Если вы хотите поддельных будучи Frame
не будучи один, только иметь одно, вы можете сделать это путем делегирования каждого Frame
метода и приписывать self.frame
(явно или через __getattr__
); вы можете даже подделать isinstance
, если вам действительно нужно. Но это расширенный вариант использования, и вам нужно изучить немного сложного материала, чтобы он работал плавно, поэтому, надеюсь, это не то, что вы хотите.
Почему вы думаете, что можете удалить его? Вы не можете, это инициализатор класса «Frame», который заставляет ваш объект работать. –
Если вы удалите его, вы должны его заменить 'super (Black, self) .__ init __ (parent, bg = 'black')' ... – glglgl
@glglgl Фактически, в 2.x это не будет работать, потому что почти все Tkinter - это классы старого стиля. – abarnert