fit_options.py 文件源码

python
阅读 24 收藏 0 点赞 0 评论 0

项目:pytc-gui 作者: harmslab 项目源码 文件源码
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)])
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号