Наконец-то появилась возможность проверить это. Как и ожидалось, это работает безупречно, но, учитывая мою уникальную ситуацию, мне нужно переосмыслить, как я к этому подхожу.

ольно новичок в Python, и я чувствую, что это сложный вопрос, с учетом того, что он может выходить за рамки Stack Exchange. Пожалуйста, потерпите меня.

У меня есть QTreeWidget и QStackedWidget. Я заполнил QTreeWidget с помощью кортежа

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]))

Я хотел бы использовать этот же кортеж, чтобы заполнить QStackedWidget страницами, которые соответствуют QTreeWidget, и установить сигналы и слоты в одном цикле. Я пытался с помощью:

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

но все объекты указывают на одно и то же шестнадцатеричное значение, которое, как я предполагаю, означает, что они не уникальны. Возможно, мне нужно увеличить индекс? В любом случае я не смог понять, как генерировать сигналы и слоты при этом, поскольку они создаются динамически, и мне нужны уникальные, но предсказуемые имена.

Идея состоит в том, что простым добавлением новой категории или элемента в кортеж QTreeView, QStackedWidget и сигналы / слоты генерируются во время выполнения без необходимости изменения какого-либо исходного кода за пределами кортежа.

Каков будет лучший способ сделать это?

Извините, если это слишком много, но я подумал, что это может быть хорошим вопросом, если кто-то попытается сделать то же самое позже.

РЕДАКТИРОВАТЬ: я использую Python 3.6 и PyQt5

Ответы на вопрос(1)

Ваш ответ на вопрос