не так много опыта вообще с pyqt..
Я разработал пользовательский интерфейс с помощью Qt Designer с двумя радиокнопками.
В зависимости от выбранного RadioButton некоторые виджеты видны, а другие нет. Чего я не пытаюсь сделать, так это автоматически изменить размер макета диалогового окна в зависимости от того, сколько виджетов отображается в пользовательском интерфейсе.
Вопрос очень похож на этот вопрос . Вот отрывок кода, который может быть полезен для понимания проблемы (я знаю, что это всего лишь часть кода, но весь диалог довольно длинный):
class MyDialog(QDialog, FORM_CLASS):
..........
# connect the radioButton with a function that reloads the UI
self.radioSingle.toggled.connect(self.refreshWidgets)
.....
# dictionary with all the widgets and the values
self.widgetType = {
self.cmbModelName: ['all'],
self.cmbGridLayer: ['all'],
self.cmbRiverLayer: ['all'],
self.lineNewLayerEdit: ['all'],
self.lineLayerNumber: ['single']
}
# function that refresh the UI with the correct widgets depending on the radiobutton selected
def refreshWidgets(self, idx):
'''
refresh UI widgets depending on the radiobutton chosen
'''
tp = self.radioSingle.isChecked()
for k, v in self.widgetType.items():
if tp:
if 'all' or 'single' in v:
active = True
k.setEnabled(active)
k.setVisible(active)
else:
active = 'all' in v
k.setEnabled(active)
k.setVisible(active)
# attempt to resize the Dialog
self.setSizeConstraint()
Конечно, код можно было бы улучшить (не настолько опытный в написании кода)...