def updateParametersTable(self): import Fitting # read the currently selected function currFunction = self.getCurrentFunction() # set the table size self.ui.tableParameters.setColumnCount(len(Fitting.tableHeaders)) self.ui.tableParameters.setRowCount(len(currFunction.paramList)) self.ui.tableParameters.setVerticalHeaderLabels(currFunction.paramList) self.ui.tableParameters.setHorizontalHeaderLabels(Fitting.tableHeaders) # set any defaults? - Handle in updatNewFunction # read any parameters results (if any) # Use Param.stderr != None to determine if a fit has been run or just read it all and set blank for None from itertools import izip for colNum, colName in izip(xrange(len(Fitting.tableHeaders)), Fitting.tableHeaders): for rowNum, rowName in izip(xrange(len(currFunction.paramList)), currFunction.paramList): #I will now hit each cell in the table try: currParam = self.params[rowName] except KeyError: continue value = Fitting.GetParameterValue(currParam, colName) # convert the value to a string appropriately if value == None or value == float('-inf') or value == float( 'inf'): value = '' elif isinstance(value, bool): value = '%s' % value else: try: # I'm a number value = '%e' % value except TypeError: # I'm not a number, could be boolean or string or dict value = '%s' % value self.ui.tableParameters.setItem(rowNum, colNum, QtGui.QTableWidgetItem(value))