class Inter_OTG(QWidget): def __init__(self): self.x = [] self.y = [] super(Inter_OTG, self).__init__() self.canvas = PlotCanvas self.setGeometry(160, 100, 815, 520) self.setWindowTitle("H.B Tayeb : Inter_OTG") self.grid = QGridLayout() self.grid2 = QGridLayout() self.allGB = QGroupBox("DATA IN/OUT") self.allGB.setLayout(self.grid2) # ------------------------------------------------- self.fonct = QPlainTextEdit() self.fonct.adjustSize() self.qb = QGroupBox("Polynomial ") self.qf = QFormLayout() self.clear = QPushButton("Clear Data") # ------------------------------------------------- self.qb1 = QGroupBox("Load DATA") # ---> self.plotfig = QGroupBox("the result graph") self.qV = QVBoxLayout() self.table = QTableWidget() self.table.setColumnCount(2) self.table.setHorizontalHeaderLabels(["Xi", "Yi"]) self.m = PlotCanvas(self, width=5, height=4) self.load = QPushButton("Load Data") # ------------------------------------------------- self.getfct = QPushButton("get function") self.qb1.setLayout(self.qV) self.qV.addWidget(self.table) self.qV.addWidget(self.load) self.qf.addRow(self.clear) self.qf.addRow(self.fonct) self.qb.setLayout(self.qf) self.qV2 = QVBoxLayout() # ----> self.qV2.addWidget(self.m) self.plotfig.setLayout(self.qV2) self.grid2.addWidget(self.qb, 0, 0) self.grid2.addWidget(self.qb1, 1, 0) self.grid.addWidget(self.allGB, 0, 0) self.grid.addWidget(self.plotfig, 0, 1) self.setLayout(self.grid) # ------------------------------------------------- self.load.clicked.connect(lambda: self.load_data_interpolate()) self.clear.clicked.connect(lambda: self.clear_data()) self.getfct.clicked.connect(lambda: self.get_fct()) xi = [] yi = [] def load_data_interpolate(self): length,fct = self.m.interpolate() self.fonct.insertPlainText(fct) self.table.setRowCount(length) global xi global yi cp = 0 with open('xpoints.txt', 'r') as f: xx = f.read().split(',') for i in xx[:-1]: if i != None: self.table.setItem(cp, 0, QTableWidgetItem(str(i))) self.xi.append(round(float(i))) cp += 1 else: pass cp1 = 0 with open('ypoints.txt', 'r') as f: xx = f.read().split(',') for i in xx[:-1]: if i != None: self.table.setItem(cp1, 1, QTableWidgetItem(str(i))) self.yi.append(round(float(i))) cp1 += 1 else: pass def clear_data(self): try: os.remove("xpoints.txt") os.remove("ypoints.txt") os.remove("fonction.txt") self.fonct.clear() for i in range(self.table.rowCount()): for j in range(self.table.columnCount()): self.table.setItem(i, j, QTableWidgetItem("0.0")) self.xi = [] self.yi = [] self.table.setRowCount(len(self.xi)) except (IOError,IndexError): print("files already deleted !")