Я использую Pyside2 и у меня есть пользовательский интерфейс, который использует QGraphicsView и QGraphicsScene.
Сейчас у меня есть два отдельных класса, которые подклассов QGraphicsEllipseItem и QGraphicsRectItem похожи на это:
class MyRectButton(QGraphicsRectItem):
def contextMenuEvent(self, event):
# custom context menu
pass
def custom_method_A(self):
# add a custom method
pass
def custom_method_B(self):
# add a custom method
pass
class MyEllipseButton(QGraphicsEllipseItem):
def contextMenuEvent(self, event):
# custom context menu
pass
def custom_method_A(self):
# add a custom method
pass
def custom_method_B(self):
# add a custom method
pass
Скорее чем иметь избыточные методы в обоих классах, я бы хотел один класс, который может быть прямоугольником или эллипсом, например:
class MyButton():
def __init__(self,shape='Ellipse'):
pass
def contextMenuEvent(self, event):
# custom context menu
pass
def custom_method_A(self):
# add a custom method
pass
def custom_method_B(self):
# add a custom method
pass