PyQt:继承自PushButton

PyQt: inheriting from PushButton

我正在做一个现有的项目,我对 PyQt 的经验很少,所以我不确定我需要什么来生成一个最小的工作示例,也许有人可以帮助我。

代码中有一部分创建了 QPushButton 并将其添加到 QGraphicsScene,如下所示:

b = QPushButton('foo')
scene.addWidget(b)

我想用继承自 QPushButton 的 class 替换 b,例如:

class Bar(QPushButton):
    def __init__(self):
        super(Bar, self).__init__('foo')

我相信下面的行为应该与第一个代码示例相同:

b = Bar()
scene.addWidget(b)

相反,代码在这里崩溃了,到目前为止我还没有弄清楚原因。有什么明显的我做错了吗?

试一试:

class Bar(QPushButton):
    def __init__(self, button):
        super(Bar, self).__init__()
        self.setText(button)
        self.clicked.connect(lambda: print("Press button"))

class Desktop(QMainWindow):
    def __init__(self):
        super(Desktop, self).__init__()
        self.centerWidget = QWidget(self)
        layout            = QVBoxLayout() 
        scene = QGraphicsScene()  
        view  = QGraphicsView(scene)

        b = Bar("Press me :)")

        scene.addWidget(b)
        layout.addWidget(view)
        self.centerWidget.setLayout(layout)
        self.setCentralWidget(self.centerWidget)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex  = Desktop()
    ex.show()
    sys.exit(app.exec_())