Я новичок в 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