ajouter et supprimer dynamiquement des widgets dans PyQt

à l'aide de PyQt, je suis en train de créer une interface pour laquelle je peux ajouter ou supprimer un widget de façon dynamique. Je veux définir une catégorie distincte pour le widget qui va être ajouté ou supprimé. Je ne peux pas semblent être en mesure d'obtenir le widget que j'instancie pour afficher à l'intérieur de l'interface principale. Ici c'est le code que j'utilise:

from PyQt4 import QtGui, QtCore
import sys
class Main(QtGui.QMainWindow):
def __init__(self, parent = None):
super(Main, self).__init__(parent)
# central widget
self.centralWidget = QtGui.QWidget(self)
# main layout
self.vLayout = QtGui.QVBoxLayout(self.centralWidget)
# main button
self.pButton_add = QtGui.QPushButton(self.centralWidget)
self.pButton_add.setText('button to add other widgets')
# scroll area
self.scrollArea = QtGui.QScrollArea(self.centralWidget)
self.scrollArea.setWidgetResizable(True)
# scroll area widget contents
self.scrollAreaWidgetContents = QtGui.QWidget(self.scrollArea)
# scroll area widget contents - layout
self.formLayout = QtGui.QFormLayout(self.scrollAreaWidgetContents)
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
# add all main to the main vLayout
self.vLayout.addWidget(self.pButton_add)
self.vLayout.addWidget(self.scrollArea)
# set central widget
self.setCentralWidget(self.centralWidget)
# connections
self.pButton_add.clicked.connect(self.addWidget)
def addWidget(self):
z = Test(self.scrollAreaWidgetContents)
count = self.formLayout.rowCount()
self.formLayout.setWidget(count, QtGui.QFormLayout.LabelRole, z)
class Test(QtGui.QWidget):
def __init__( self, parent):
super(Test, self).__init__(parent)
self.pushButton = QtGui.QPushButton(self)
app = QtGui.QApplication(sys.argv)
myWidget = Main()
myWidget.show()
app.exec_()

le truc, c'est que lorsque j'utilise le code ci-dessous à l'intérieur de mon "addWidget " méthode", il fait exactement ce que je veux faire, mais la méthode de classe ne semble pas fonctionner.

z = QtGui.QPushButton(self.scrollAreaWidgetContents)
count = self.formLayout.rowCount())
self.formLayout.setWidget(count, QtGui.QFormLayout.LabelRole, z)

Je me demande pourquoi le z = Test() n'est pas en produisant des résultats? Des idées? Merci!

source d'informationauteur boundless