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_())
我正在做一个现有的项目,我对 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_())