def _load_fitter_info(self):
"""
Load fitter info from pytc.
"""
# get list of Fitter subclasses, sorted by name
objects = []
for name, obj in inspect.getmembers(pytc.fitters):
if inspect.isclass(obj):
objects.append((name,obj))
objects.sort()
self._fitter_classes = []
self._fitter_vars = []
self._fitter_widgets = []
self._fitter_options = []
self._fitter_names = []
self._fitter_radio_buttons = []
self._fitter_defaults = []
# For every Fitter subclass...
for name, obj in objects:
self._fitter_classes.append(obj)
# Make new widget
self._fitter_widgets.append(QW.QFrame())
self._fitter_options.append(QW.QFormLayout(self._fitter_widgets[-1]))
# Add name and radio button to widget
self._fitter_names.append(name.replace("Fitter",""))
self._fitter_radio_buttons.append(QW.QRadioButton(self._fitter_names[-1]))
self._fitter_radio_buttons[-1].toggled.connect(self._select_fit)
# Figure out arguments for this Fitter subclass
args = inspect.getargspec(obj)
if len(args.args) == 1 and args.defaults is None:
self._fitter_defaults.append({})
else:
self._fitter_defaults.append({arg: param for arg, param in
zip(args.args[1:], args.defaults)})
fitter_keys = list(self._fitter_defaults[-1].keys())
fitter_keys.sort()
# Append fit option
self._fitter_vars.append({})
for n in fitter_keys:
label_name = str(n).replace("_", " ") + ": "
label = QW.QLabel(label_name.title(), self)
entry = InputWidget(self._fitter_defaults[-1][n])
self._fitter_vars[-1][n] = entry
self._fitter_options[-1].addRow(label,entry)
# map from name back to index in lists above
self._fitter_name_to_index = dict([(v,i) for i, v in enumerate(self._fitter_names)])
评论列表
文章目录