Crear automáticamente páginas QStackedWidget basadas en Tuple

Soy bastante nuevo en Python, y creo que esta es una pregunta avanzada, con eso en mente, podría estar fuera del alcance de Stack Exchange. Por favor, tenga paciencia conmigo.

Tengo un QTreeWidget y QStackedWidget. He poblado el QTreeWidget usando una tupla

TreeList = ({

    'Header1': ((
        'Item11',
        'Item12',
    )),

    'Header2': ((
        'Item21',
        'Item22'
    ))
})

for key, value in TreeList.items():
    root = QTreeWidgetItem(self.QTreeWidget, [key])
    for val in value:
        root.addChild(QTreeWidgetItem([val]))

Me gustaría usar esta misma tupla para llenar un QStackedWidget con páginas que se corresponden con el QTreeWidget y establecer señales y ranuras en el mismo bucle. He intentado usar:

for key in TreeList['Item1']:
    page = QWidget()
    page.setObjectName(key)
    self.QStackedWidget.addWidget(page)
    print(self.QStackedWidget)

pero todos los objetos apuntan al mismo valor hexadecimal, lo que supongo que significa que no son únicos. ¿Quizás necesito incrementar el índice? En cualquier caso, no he podido descubrir cómo generar las señales y las ranuras al hacerlo, ya que se están creando dinámicamente y necesito nombres únicos pero predecibles.

La idea es que simplemente agregando una nueva categoría o elemento a la tupla, el QTreeView, QStackedWidget y las señales / ranuras se generan en tiempo de ejecución sin tener que modificar ningún código fuente más allá de la tupla.

¿Cuál sería la mejor manera de lograr esto?

Lo siento si esto es demasiado, pero pensé que podría ser una buena pregunta en caso de que alguien más intente lo mismo más adelante.

EDITAR: estoy usando Python 3.6 y PyQt5

Respuestas a la pregunta(1)

Su respuesta a la pregunta