Après de nombreuses recherches (et celle-ci m'a pris pas mal de temps, donc je l'ajoute ici pour référence future), voici la méthode que j'ai trouvée pour vraiment éclaircir et supprimer les widgets dans une disposition :
for i in reversed(range(layout.count())):
layout.itemAt(i).widget().setParent(None)
Ce que la documentation dit à propos du QWidget c'est que :
Le nouveau widget est supprimé lorsque son parent est supprimé.
Remarque importante : Vous devez effectuer une boucle en arrière car la suppression des éléments du début déplace les éléments et modifie l'ordre des éléments dans la mise en page.
Pour tester et confirmer que la mise en page est vide :
for i in range(layout.count()): print i
Il semble y avoir une autre façon de procéder. Au lieu d'utiliser la fonction setParent, utilisez la fonction deleteLater() comme ceci :
for i in reversed(range(layout.count())):
layout.itemAt(i).widget().deleteLater()
La documentation indique que QObject.deleteLater (self)
Planifie la suppression de cet objet.
Cependant, si vous exécutez le code de test spécifié ci-dessus, il imprime certaines valeurs. Cela indique que la mise en page comporte toujours des éléments, contrairement au code avec setParent .