Ejemplo n.º 1
0
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 !")