PyQt: RuntimeError: l'objet C / C ++ encapsulé a été supprimé

Si j'exécute ce code:

    #!/usr/local/bin/   python3

import sys 
from PyQt4.QtCore import *
from PyQt4.QtGui import *


class Window(QMainWindow):

    def __init__(self):
        super().__init__()
        self.button1 = QPushButton("1")
        self.button2 = QPushButton("2")
        self.setCentralWidget(self.button1)
        self.button1.clicked.connect(lambda: self.setCentralWidget(self.button2))
        self.button2.clicked.connect(lambda: self.setCentralWidget(self.button1))
        self.show()

if __name__ == '__main__':

    import sys 
    app = QApplication(sys.argv)
    window = Window()
    sys.exit(app.exec_())

...J'obtiens ce résultat:

Traceback (most recent call last):
  File "test.py", line 16, in <lambda>
    self.button2.clicked.connect(lambda: self.setCentralWidget(self.button1))
RuntimeError: wrapped C/C++ object of type QPushButton has been deleted

Je ne comprends pas pourquoi l'objet est supprimé. La fenêtre doit conserver une référence à elle.
J'ai soigneusement étudié ces postes:
La compréhension de la “sous-jacente C/C++ objet a été supprimé” erreur
Peut un PyQt4 QObject être interrogé pour déterminer si le sous-jacent C++ instance a été détruit?

Pourquoi le bouton supprimé?

source d'informationauteur Brian