结合Qgraphics和sqlalchemy时发生元类错误

2024-06-17 10:02:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用sqlalchemy使QGraphicsItem的持久化。简单地将基类与PySide类结合在一起会导致关于元类的错误。metaclsses主题是Python的魔力,我不想在不需要的时候深入研究它。 有没有一个简单的方法来解决这个元类冲突?在

class MarketItem(Base, QtGui.QGraphicsEllipseItem, QtGui.QListWidgetItem):
    """
    """
        __tablename__       = "marketitem"
    Id                  = Column(Integer(4), primary_key=True)
    name                = Column(String(40))
    x_pos               = Column(Integer(4))
    y_pos               = Column(Integer(4))
    def __init__(self, x_pos, y_pos, scene, name, style=QtCore.Qt.SolidLine,
                 rect=None, matrix=QtGui.QTransform(), cat = None):
        super(MarketItem, self).__init__()
        self.setFlags(QtGui.QGraphicsItem.ItemIsSelectable|
                      QtGui.QGraphicsItem.ItemIsMovable|
                      QtGui.QGraphicsItem.ItemIsFocusable)
        self.pos = QtCore.QPoint(x_pos, y_pos)
        self.x_pos = x_pos
        self.y_pos = y_pos
        self.name = name

给出错误:

^{pr2}$

谢谢,理查德


Tags: nameposselfnonesqlalchemyinit错误column
1条回答
网友
1楼 · 发布于 2024-06-17 10:02:02

前面有人问过一个类似的问题,这个问题帮助我为您提供了一个可能的解决方案。在

class CommonMetaclass(type(QtCore.Qt), type(Base)):
    pass

class MarketItem(QtGui.QGraphicsEllipseItem, QtGui.QListWidgetItem, Base):
    __metaclass__ = CommonMetaclass
    __tablename__ = "marketitem"
    ...

我可以像这样声明类,不确定它是否真的可用。在

如果有问题,请尝试更改这两个类定义中父类的顺序。在

对于python3,这个片段需要稍微修改一下,但是您没有提到python3,遗憾的是,版本2现在是“默认的”。。。在

相关问题 更多 >