QGraphicsPixmapItem, QGraphicsItemGroup наследованные от одного класса
Я пишу два класса, они наследуются от QGraphicsPixmapItem и QGraphicsItemGroup и в них есть методы hoverEvent:
class MyPixItem(QGraphicsPixmapItem):
def __init__(self):
super(QGraphicsPixmapItem, self).__init__()
def hoverEnterEvent(self, event):
super().hoverEnterEvent(event)
#some todo
def hoverLeaveEvent(self, event):
super().hoverLeaveEvent(event)
#some todo
def someSpecFuncForPixmapItem(self):
pass
class MyGroupItem(QGraphicsItemGroup):
def __init__(self):
super(QGraphicsItemGroup, self).__init__()
def hoverEnterEvent(self, event):
super().hoverEnterEvent(event)
#some todo
def hoverLeaveEvent(self, event):
super().hoverLeaveEvent(event)
#some todo
def someSpecFuncForGroupItem(self):
pass
Нельзя ли их как-то наследовать от одного класса, чтобы не плодить дубликаты hoverEnterEvent и hoverLeaveEvent?
Ответы (1 шт):
Автор решения: 0dminnimda
→ Ссылка
Если hoverEnterEvent и hoverLeaveEvent в обоих классах одинаково реализованы, то вы можете вынести их как отдельные функции и использовать их внутри класса:
def hoverEnterEvent(self, event):
... # some todo
def hoverLeaveEvent(self, event):
... # some todo
class MyPixItem(QGraphicsPixmapItem):
def __init__(self):
super(QGraphicsPixmapItem, self).__init__()
def hoverEnterEvent(self, event):
super().hoverEnterEvent(event)
hoverEnterEvent(self, event)
def hoverLeaveEvent(self, event):
super().hoverLeaveEvent(event)
hoverLeaveEvent(self, event)
def someSpecFuncForPixmapItem(self):
pass
class MyGroupItem(QGraphicsItemGroup, MyEvents):
def __init__(self):
super(QGraphicsItemGroup, self).__init__()
def hoverEnterEvent(self, event):
super().hoverEnterEvent(event)
hoverEnterEvent(self, event)
def hoverLeaveEvent(self, event):
super().hoverLeaveEvent(event)
hoverLeaveEvent(self, event)
def someSpecFuncForGroupItem(self):
pass
Если же реализации немного разные, вы таким же образом можете вынести похожий функционал в эти функции, и оставить в классе только отличающиеся части.