def __init__(self, settings, parent=None, description=None): super(ConfigDialog, self).__init__(parent) self.setWindowTitle("Configure source") self.layout = QGridLayout(self) row = 0 self.widgets = {} self.settings = settings # Settings should be a dictionary for name, val in settings.items(): label = QLabel(self) label.setText(str(name)) self.layout.addWidget(label, row, 0, 1, 1) # Check the type of each setting, and create widgets accordingly if isinstance(val, basestring): # A string of some kind widget = QLineEdit(self) widget.setText(val) elif isinstance(val, list): # A list of alternative values, first is selected print("List: ", name) continue elif isinstance(val, bool): widget = QCheckBox(self) if val: widget.setCheckState(Qt.CheckState.Checked) else: widget.setCheckState(Qt.CheckState.Unchecked) elif isinstance(val, (int,long)): widget = QLineEdit(self) widget.setInputMask("9000000") widget.setText(str(val).strip()) elif isinstance(val, float): widget = QLineEdit(self) widget.setInputMask("0.00") widget.setText(str(val).strip()) else: print("Ignoring: " + name) continue widget.config = name self.widgets[name] = widget self.layout.addWidget(widget, row, 1, 1, 1) row += 1 # Add OK and Cancel buttons buttonbox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) buttonbox.accepted.connect(self.getValues) buttonbox.rejected.connect(self.reject) self.layout.addWidget(buttonbox, row, 1, 2, 1)