Форум сайта python.su
Есть QFormLayout из которой нужно получить список виджетов, которые она содержит. Сама форма имеет следующее содержание:
self.formWidget = QtWidgets.QWidget() self.addItemForm = QtWidgets.QFormLayout() self.itemType = QtWidgets.QComboBox() self.itemType.setInsertPolicy(QtWidgets.QComboBox.InsertAtTop) self.itemType.setEditable(True) self.model = QtWidgets.QComboBox() self.model.setEditable(True) self.location = QtWidgets.QComboBox() self.location.setEditable(True) self.diapason = QtWidgets.QComboBox() self.diapason.setEditable(True) self.comboBoxDatas() self.inter = QtWidgets.QSpinBox() self.lastCheck = QtWidgets.QDateEdit() self.lastCheck.setCalendarPopup(True) date = QtCore.QDate.currentDate() self.lastCheck.setDate(date) self.hbox = QtWidgets.QHBoxLayout() self.addBtn = QtWidgets.QPushButton('Добавить') self.hbox.addItem(hSpace) self.hbox.addWidget(self.addBtn) self.addItemForm.addRow('1', self.itemType) self.addItemForm.addRow('2', self.model) self.addItemForm.addRow('3', self.location) self.addItemForm.addRow('4', self.diapason) self.addItemForm.addRow('5', self.inter) self.addItemForm.addRow('6', self.lastCheck) self.addItemForm.addRow(self.hbox) self.addItemForm.addItem(vSpace)
allWidgetsForm = self.addItemForm.findChildren(QtWidgets.QWidget)
Офлайн
Чтобы оно чтото вернуло, виджет должен иметь “детей”. Когда вы делаете .addRow вы добавляете виджет в компоновщик, но это не делает его автоматически родительским обьектом. Родителем являеться виджет для которого QFormLayout является компоновщиком. Поэтому ему и возвращать нечего.
Можно узнать к-во виджетов в компоновщике self.addItemForm.count() и пройтись по всем элемнтам в цикле self.addItemForm.itemAt(index)
Или явно задавать родителя тогда findChildren чтот вернет. Правда я не помню при добавлении виджета в компоновщик оно меняет родителя или нет, если до этого родитель был явно указан.
[code python][/code]
Отредактировано PEHDOM (Июнь 7, 2017 15:56:52)
Офлайн