def __init__(self, widget_type, parameter_path, parent=None): QtWidgets.QWidget.__init__(self, parent) self.widget_type = widget_type self.layout = QtWidgets.QHBoxLayout() self.parameter_label = QtWidgets.QLabel(parameter_path) self.parameter_widget, self.change_signal = get_widget_by_type(self.widget_type) self.parameter_label.setBuddy(self.parameter_widget) self.parameter_widget.setObjectName(parameter_path) self.parameter_units = QtWidgets.QLabel() self.layout.addWidget(self.parameter_label) self.layout.addWidget(self.parameter_widget) self.layout.addWidget(self.parameter_units)
def create_widget(self, wtype, name, qualifier=None, layout=None, rows=None, mapping=None): """Create a parameter widget. Parameters ---------- wtype : str The representation string for the parameter type. name : str The name of the parameter. qualifier : str, optional A prefix to the name for setting to the object name. layout : QGridLayout, optional An alternate layout instance. rows : int, optional An alternate value for rows in a layout """ parameter_label = QtWidgets.QLabel(name) parameter_widget, change_signal = get_widget_by_type(wtype) parameter_label.setBuddy(parameter_widget) if qualifier is not None: full_name = "{}/{}".format(qualifier, name) else: full_name = name parameter_widget.setObjectName(full_name) parameter_units = QtWidgets.QLabel() signal = getattr(parameter_widget, change_signal) signal.connect(self.signal_mapper.map) self.signal_mapper.setMapping(parameter_widget, parameter_widget) if layout is None: layout = self.layout if rows is None: current_row = self.rows else: current_row = rows layout.addWidget(parameter_label, current_row, 0) layout.addWidget(parameter_widget, current_row, 1) layout.addWidget(parameter_units, current_row, 2) if rows is None: self.rows += 1 else: rows += 1 return rows