Beispiel #1
0
    def __init__(self):
        super(MainWindow, self).__init__()  

        self.particulas = Particulas()

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.finalcap.clicked.connect(self.click_agregarfinal)
        self.ui.Iniciocap.clicked.connect(self.click_agregarinicio)      
        self.ui.Mostrar.clicked.connect(self.click_mostrar)
        self.ui.OrigenX.valueChanged.connect(self.setValue)
        self.ui.OrigenY.valueChanged.connect(self.setValue)
        self.ui.DestinoX.valueChanged.connect(self.setValue)
        self.ui.DestinoY.valueChanged.connect(self.setValue)
        self.ui.Verde.valueChanged.connect(self.setValue)
        self.ui.Rojo.valueChanged.connect(self.setValue)
        self.ui.Azul.valueChanged.connect(self.setValue)

        self.ui.actionAbrir.triggered.connect(self.action_abrir_archivo)
        self.ui.actionGuardar.triggered.connect(self.action_guardar_archivo)
        self.ui.actionPor_ID.triggered.connect(self.action_ordenarid)
        self.ui.actionVelocidad.triggered.connect(self.action_ordenarvelocidad)
        self.ui.actionDistancia.triggered.connect(self.action_ordenardistancia)

        self.ui.Mostrartabla_push.clicked.connect(self.Mostrar_tabla)
        self.ui.Buscar_push.clicked.connect(self.buscar_id)
        
        self.ui.Dibujarpush.clicked.connect(self.dibujar)
        self.ui.Limpiarpush.clicked.connect(self.limpiar)

        self.scene = QGraphicsScene()  
        self.ui.graphicsView.setScene(self.scene)
    def __init__(self):
        super(MainWindow, self).__init__()

        self.particulas = Particulas()

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.agregar_final_pushButton.clicked.connect(self.click_agregar)
        self.ui.agregar_inicio_pushButton.clicked.connect(
            self.click_agregar_inicio)
        self.ui.mostrar_pushButton.clicked.connect(self.click_mostrar)
        self.ui.actionAbrir.triggered.connect(self.click_abrir_archivo)
        self.ui.actionGuardar.triggered.connect(self.click_guardar_archivo)
        self.ui.mostrar_tabla_pushButton.clicked.connect(self.mostrar_tabla)
        self.ui.buscar_pushButton.clicked.connect(self.buscar_id)

        self.scene = QGraphicsScene()
        self.ui.graphicsView.setScene(self.scene)

        self.ui.dibujar_pushButton.clicked.connect(self.dibujar)
        self.ui.limpiar_pushButton.clicked.connect(self.limpiar)

        self.ui.ordenar_id_pushButton.clicked.connect(self.ordenar_id)
        self.ui.ordenar_distancia_pushButton.clicked.connect(
            self.ordenar_distancia)
        self.ui.ordenar_velocidad_pushButton.clicked.connect(
            self.ordenar_velocidad)

        self.ui.actionGrafo.triggered.connect(self.mostrar_grafos)

        self.ui.action_busqueda.triggered.connect(self.busqueda)
Beispiel #3
0
 def __init__(self):
     super(MainWindow, self).__init__()
     self.particulas = Particulas()
     self.ui = Ui_MainWindow()
     self.ui.setupUi(self)
     self.ui.agregar_inicio_pushButton.clicked.connect(
         self.click_agregar_inicio)
     self.ui.agregar_final_pushButton.clicked.connect(
         self.click_agregar_final)
     self.ui.mostrar_pushButton.clicked.connect(self.click_mostrar)
Beispiel #4
0
    def __init__(self):
        super(MainWindow, self).__init__()
        self.particulas = Particulas()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.agregar_inicio_pushButton.clicked.connect(
            self.click_agregar_inicio)
        self.ui.agregar_final_pushButton.clicked.connect(
            self.click_agregar_final)
        self.ui.mostrar_pushButton.clicked.connect(self.click_mostrar)

        self.ui.actionAbrir.triggered.connect(self.action_abrir_archivo)
        self.ui.actionGuardar.triggered.connect(self.action_guardar_archivo)
Beispiel #5
0
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.particulas = Particulas()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.agregar_inicio_pushButton.clicked.connect(
            self.click_agregar_inicio)
        self.ui.agregar_final_pushButton.clicked.connect(
            self.click_agregar_final)
        self.ui.mostrar_pushButton.clicked.connect(self.click_mostrar)

    @Slot()
    def click_agregar_inicio(self):
        id = self.ui.id_lineEdit.text()
        origen_x = self.ui.origen_x_spinBox.value()
        origen_y = self.ui.origen_y_spinBox.value()
        destino_x = self.ui.destino_x_spinBox.value()
        destino_y = self.ui.destino_y_spinBox.value()
        velocidad = self.ui.velocidad_spinBox.value()
        red = self.ui.red_spinBox.value()
        green = self.ui.green_spinBox.value()
        blue = self.ui.blue_spinBox.value()

        particula = Particula(id, origen_x, origen_y, destino_x, destino_y,
                              velocidad, red, green, blue)
        self.particulas.agregar_inicio(particula)

    @Slot()
    def click_agregar_final(self):
        id = self.ui.id_lineEdit.text()
        origen_x = self.ui.origen_x_spinBox.value()
        origen_y = self.ui.origen_y_spinBox.value()
        destino_x = self.ui.destino_x_spinBox.value()
        destino_y = self.ui.destino_y_spinBox.value()
        velocidad = self.ui.velocidad_spinBox.value()
        red = self.ui.red_spinBox.value()
        green = self.ui.green_spinBox.value()
        blue = self.ui.blue_spinBox.value()

        particula = Particula(id, origen_x, origen_y, destino_x, destino_y,
                              velocidad, red, green, blue)
        self.particulas.agregar_final(particula)

    @Slot()
    def click_mostrar(self):
        self.ui.cuadro.clear()
        self.ui.cuadro.insertPlainText(str(self.particulas))
Beispiel #6
0
    def __init__(self):
        super(MainWindow, self).__init__()

        self.particulas = Particulas()

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.finalcap.clicked.connect(self.click_agregarfinal)
        self.ui.Iniciocap.clicked.connect(self.click_agregarinicio)
        self.ui.Mostrar.clicked.connect(self.click_mostrar)
        self.ui.OrigenX.valueChanged.connect(self.setValue)
        self.ui.OrigenY.valueChanged.connect(self.setValue)
        self.ui.DestinoX.valueChanged.connect(self.setValue)
        self.ui.DestinoY.valueChanged.connect(self.setValue)
        self.ui.Verde.valueChanged.connect(self.setValue)
        self.ui.Rojo.valueChanged.connect(self.setValue)
        self.ui.Azul.valueChanged.connect(self.setValue)

        self.ui.actionAbrir.triggered.connect(self.action_abrir_archivo)
        self.ui.actionGuardar.triggered.connect(self.action_guardar_archivo)

        self.ui.Mostrartabla_push.clicked.connect(self.Mostrar_tabla)
        self.ui.Buscar_push.clicked.connect(self.buscar_id)
Beispiel #7
0
from PySide2.QtWidgets import QMainWindow
from PySide2.QtCore import Slot
from ui_mainwindow import Ui_MainWindow
from particulas import Particulas
from particula import Particula

particulas = Particulas()
particula = Particula()


class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        ui = Ui_MainWindow()
        ui.setupUi(self)

        ui.Capturar.clicked.connect(self.click_agregar)
        ui.Mostrar.clicked.connect(self.click_mostrar)
        ui.ID.valueChanged.connect(self.setValue)
        ui.Velocidad.valueChanged.connect(self.setValue)
        ui.OrigenX.valueChanged.connect(self.slider_value)
        ui.OrigenY.valueChanged.connect(self.slider_value)
        ui.DestinoX.valueChanged.connect(self.slider_value)
        ui.DestinoY.valueChanged.connect(self.slider_value)
        ui.Rojo.valueChanged.connect(self.slider_value)
        ui.Verde.valueChanged.connect(self.slider_value)
        ui.Azul.valueChanged.connect(self.slider_value)

    @Slot()
    def setValue(self, valor):
        print(valor)
Beispiel #8
0
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.particulas = Particulas()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.agregar_inicio_pushButton.clicked.connect(
            self.click_agregar_inicio)
        self.ui.agregar_final_pushButton.clicked.connect(
            self.click_agregar_final)
        self.ui.mostrar_pushButton.clicked.connect(self.click_mostrar)

        self.ui.actionAbrir.triggered.connect(self.action_abrir_archivo)
        self.ui.actionGuardar.triggered.connect(self.action_guardar_archivo)

        self.ui.mostrar_tabla_pushButton.clicked.connect(self.mostrar_tabla)
        self.ui.buscar_pushButton.clicked.connect(self.buscar_id)

        self.ui.dibujar.clicked.connect(self.dibujar)
        self.ui.limpiar.clicked.connect(self.limpiar)
        self.scene = QGraphicsScene()
        self.ui.graphicsView.setScene(self.scene)

    def wheelEvent(self, event):
        if event.delta() > 0:
            self.ui.graphicsView.scale(1.2, 1.2)
        else:
            self.ui.graphicsView.scale(0.8, 0.8)

    @Slot()
    def dibujar(self):
        pen = QPen()
        pen.setWidth(2)
        for particula in self.particulas:
            r = particula.red
            g = particula.green
            b = particula.blue
            color = QColor(r, g, b)
            pen.setColor(color)

            self.scene.addEllipse(particula.origen_x, particula.origen_y, 4, 4,
                                  pen)
            self.scene.addEllipse(particula.destino_x, particula.destino_y, 4,
                                  4, pen)
            self.scene.addLine(particula.origen_x, particula.origen_y,
                               particula.destino_x, particula.destino_y, pen)

    @Slot()
    def limpiar(self):
        self.scene.clear()

    @Slot()
    def mostrar_tabla(self):
        self.ui.tabla.setColumnCount(10)
        headers = [
            "Id", "Origen en x", "Origen en y", "Destino en x", "Destino en y",
            "velocidad", "Red", "Green", "Blue", "Distancia"
        ]
        self.ui.tabla.setHorizontalHeaderLabels(headers)

        self.ui.tabla.setRowCount(len(self.particulas))

        row = 0
        for particula in self.particulas:
            id_widget = QTableWidgetItem(str(particula.id))
            origen_x_widget = QTableWidgetItem(str(particula.origen_x))
            origen_y_widget = QTableWidgetItem(str(particula.origen_y))
            destino_x_widget = QTableWidgetItem(str(particula.destino_x))
            destino_y_widget = QTableWidgetItem(str(particula.destino_y))
            velocidad_widget = QTableWidgetItem(str(particula.velocidad))
            red_widget = QTableWidgetItem(str(particula.red))
            green_widget = QTableWidgetItem(str(particula.green))
            blue_widget = QTableWidgetItem(str(particula.blue))
            distancia_widget = QTableWidgetItem(str(particula.distancia))

            self.ui.tabla.setItem(row, 0, id_widget)
            self.ui.tabla.setItem(row, 1, origen_x_widget)
            self.ui.tabla.setItem(row, 2, origen_y_widget)
            self.ui.tabla.setItem(row, 3, destino_x_widget)
            self.ui.tabla.setItem(row, 4, destino_y_widget)
            self.ui.tabla.setItem(row, 5, velocidad_widget)
            self.ui.tabla.setItem(row, 6, red_widget)
            self.ui.tabla.setItem(row, 7, green_widget)
            self.ui.tabla.setItem(row, 8, blue_widget)
            self.ui.tabla.setItem(row, 9, distancia_widget)
            row += 1

    @Slot()
    def buscar_id(self):
        ID = self.ui.buscar_lineEdit.text()
        encontrado = False
        for particula in self.particulas:
            if ID == particula.id:
                self.ui.tabla.clear()
                self.ui.tabla.setRowCount(1)

                id_widget = QTableWidgetItem(str(particula.id))
                origen_x_widget = QTableWidgetItem(str(particula.origen_x))
                origen_y_widget = QTableWidgetItem(str(particula.origen_y))
                destino_x_widget = QTableWidgetItem(str(particula.destino_x))
                destino_y_widget = QTableWidgetItem(str(particula.destino_y))
                velocidad_widget = QTableWidgetItem(str(particula.velocidad))
                red_widget = QTableWidgetItem(str(particula.red))
                green_widget = QTableWidgetItem(str(particula.green))
                blue_widget = QTableWidgetItem(str(particula.blue))
                distancia_widget = QTableWidgetItem(str(particula.distancia))

                self.ui.tabla.setItem(0, 0, id_widget)
                self.ui.tabla.setItem(0, 1, origen_x_widget)
                self.ui.tabla.setItem(0, 2, origen_y_widget)
                self.ui.tabla.setItem(0, 3, destino_x_widget)
                self.ui.tabla.setItem(0, 4, destino_y_widget)
                self.ui.tabla.setItem(0, 5, velocidad_widget)
                self.ui.tabla.setItem(0, 6, red_widget)
                self.ui.tabla.setItem(0, 7, green_widget)
                self.ui.tabla.setItem(0, 8, blue_widget)
                self.ui.tabla.setItem(0, 9, distancia_widget)

                encontrado = True
                return
        if not encontrado:
            QMessageBox.warning(
                self, "Atención",
                f'La particula con la id "{ID}" no fue encontrada')

    @Slot()
    def action_abrir_archivo(self):
        ubicacion = QFileDialog.getOpenFileName(self, "Abrir archivo", ".",
                                                "JSON (*.json)")[0]
        if self.particulas.abrir(ubicacion):
            QMessageBox.information(self, "Éxito",
                                    "Se abrió el archivo" + ubicacion)
        else:
            QMessageBox.critical(self, "Error",
                                 "Error al abrir el archivo" + ubicacion)

    @Slot()
    def action_guardar_archivo(self):
        ubicacion = QFileDialog.getSaveFileName(self, "Guardar como", ".",
                                                "JSON (*.json)")[0]
        print(ubicacion)
        if self.particulas.guardar(ubicacion):
            QMessageBox.information(self, "Éxito",
                                    "Se pudo crear el archivo" + ubicacion)
        else:
            QMessageBox.critical(self, "Error",
                                 "No se pudo crear el archivo" + ubicacion)

    @Slot()
    def click_agregar_inicio(self):
        id = self.ui.id_lineEdit.text()
        origen_x = self.ui.origen_x_spinBox.value()
        origen_y = self.ui.origen_y_spinBox.value()
        destino_x = self.ui.destino_x_spinBox.value()
        destino_y = self.ui.destino_y_spinBox.value()
        velocidad = self.ui.velocidad_spinBox.value()
        red = self.ui.red_spinBox.value()
        green = self.ui.green_spinBox.value()
        blue = self.ui.blue_spinBox.value()

        particula = Particula(id, origen_x, origen_y, destino_x, destino_y,
                              velocidad, red, green, blue)
        self.particulas.agregar_inicio(particula)

    @Slot()
    def click_agregar_final(self):
        id = self.ui.id_lineEdit.text()
        origen_x = self.ui.origen_x_spinBox.value()
        origen_y = self.ui.origen_y_spinBox.value()
        destino_x = self.ui.destino_x_spinBox.value()
        destino_y = self.ui.destino_y_spinBox.value()
        velocidad = self.ui.velocidad_spinBox.value()
        red = self.ui.red_spinBox.value()
        green = self.ui.green_spinBox.value()
        blue = self.ui.blue_spinBox.value()

        particula = Particula(id, origen_x, origen_y, destino_x, destino_y,
                              velocidad, red, green, blue)
        self.particulas.agregar_final(particula)

    @Slot()
    def click_mostrar(self):
        self.ui.cuadro.clear()
        self.ui.cuadro.insertPlainText(str(self.particulas))
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.particulas = Particulas()

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.agregar_final_pushButton.clicked.connect(self.click_agregar)
        self.ui.agregar_inicio_pushButton.clicked.connect(
            self.click_agregar_inicio)
        self.ui.mostrar_pushButton.clicked.connect(self.click_mostrar)
        self.ui.actionAbrir.triggered.connect(self.click_abrir_archivo)
        self.ui.actionGuardar.triggered.connect(self.click_guardar_archivo)
        self.ui.mostrar_tabla_pushButton.clicked.connect(self.mostrar_tabla)
        self.ui.buscar_pushButton.clicked.connect(self.buscar_id)

        self.scene = QGraphicsScene()
        self.ui.graphicsView.setScene(self.scene)

        self.ui.dibujar_pushButton.clicked.connect(self.dibujar)
        self.ui.limpiar_pushButton.clicked.connect(self.limpiar)

        self.ui.ordenar_id_pushButton.clicked.connect(self.ordenar_id)
        self.ui.ordenar_distancia_pushButton.clicked.connect(
            self.ordenar_distancia)
        self.ui.ordenar_velocidad_pushButton.clicked.connect(
            self.ordenar_velocidad)

        self.ui.actionGrafo.triggered.connect(self.mostrar_grafos)

        self.ui.action_busqueda.triggered.connect(self.busqueda)

    @Slot()
    def busqueda(self):
        self.particulas.peso()
        self.ui.salida.clear()

        origenes = (int(self.ui.origenx_lineEdit.text()),
                    int(self.ui.origeny_lineEdit.text()))
        recorrido = self.particulas.recorrido_profundidad(origenes)

        print("Profundidad")

        self.ui.salida.insertPlainText("Profundidad" + '\n')
        for i in recorrido:
            self.ui.salida.insertPlainText(str(i) + '\n')
            print(i)

        recorrido_2 = self.particulas.recorrido_amplitud(origenes)

        print("\nAmplitud")

        self.ui.salida.insertPlainText('\n' "Amplitud" + '\n')
        for i in recorrido_2:
            self.ui.salida.insertPlainText(str(i) + '\n')
            print(i)

    def wheelEvent(self, event):
        if event.delta() > 0:
            self.ui.graphicsView.scale(1.2, 1.2)
        else:
            self.ui.graphicsView.scale(0.8, 0.8)

    @Slot()
    def mostrar_grafos(self):
        self.ui.salida.clear()
        self.ui.salida.insertPlainText(self.particulas.mostrar_diccionario())

    @Slot()
    def ordenar_id(self):
        self.particulas.ordenarid()

    @Slot()
    def ordenar_distancia(self):
        self.particulas.ordenardistancia()

    @Slot()
    def ordenar_velocidad(self):
        self.particulas.ordenarvelocidad()

    @Slot()
    def dibujar(self):

        for particula in self.particulas:
            pen = QPen()
            pen.setWidth(1)
            c_red = particula.red
            c_green = particula.green
            c_blue = particula.blue
            color = QColor(c_red, c_green, c_blue)
            pen.setColor(color)

            c_origenx = particula.origenx
            c_origeny = particula.origeny
            c_destinox = particula.destinox
            c_destinoy = particula.destinoy

            self.scene.addEllipse(c_origenx, c_origeny, .8, .8, pen)
            self.scene.addEllipse(c_destinox, c_destinoy, .8, .8, pen)
            self.scene.addLine(c_origenx, c_origeny, c_destinox, c_destinoy,
                               pen)

    @Slot()
    def limpiar(self):
        self.scene.clear()

    @Slot()
    def buscar_id(self):
        ident = self.ui.buscar_lineEdit.text()
        encontrado = False
        for particula in self.particulas:
            if ident == str(particula.identificacion):
                self.ui.tabla.clear()
                self.ui.tabla.setRowCount(1)

                identificacion_widget = QTableWidgetItem(
                    str(particula.identificacion))
                origenx_widget = QTableWidgetItem(str(particula.origenx))
                origeny_widget = QTableWidgetItem(str(particula.origeny))
                destinox_widget = QTableWidgetItem(str(particula.destinox))
                destinoy_widget = QTableWidgetItem(str(particula.destinoy))
                velocidad_widget = QTableWidgetItem(str(particula.velocidad))
                red_widget = QTableWidgetItem(str(particula.red))
                blue_widget = QTableWidgetItem(str(particula.blue))
                green_widget = QTableWidgetItem(str(particula.green))
                d_widget = QTableWidgetItem(str(particula.d))

                self.ui.tabla.setItem(0, 0, identificacion_widget)
                self.ui.tabla.setItem(0, 1, origenx_widget)
                self.ui.tabla.setItem(0, 2, origeny_widget)
                self.ui.tabla.setItem(0, 3, destinox_widget)
                self.ui.tabla.setItem(0, 4, destinoy_widget)
                self.ui.tabla.setItem(0, 5, velocidad_widget)
                self.ui.tabla.setItem(0, 6, red_widget)
                self.ui.tabla.setItem(0, 7, blue_widget)
                self.ui.tabla.setItem(0, 8, green_widget)
                self.ui.tabla.setItem(0, 9, d_widget)

                encontrado = True
                return

        if not encontrado:
            QMessageBox.warning(
                self, "Atención",
                f'La particula con el id"{ident}"no fue encontrada')

    @Slot()
    def mostrar_tabla(self):
        self.ui.tabla.setColumnCount(10)
        headers = [
            "ID", "Origen en x", "Origen en y", "Destino en x", "Destino en y",
            "Velocidad", "Red", "Blue", "Green", "Distancia"
        ]
        self.ui.tabla.setHorizontalHeaderLabels(headers)
        self.ui.tabla.setRowCount(len(self.particulas))

        row = 0
        for particula in self.particulas:
            identificacion_widget = QTableWidgetItem(
                str(particula.identificacion))
            origenx_widget = QTableWidgetItem(str(particula.origenx))
            origeny_widget = QTableWidgetItem(str(particula.origeny))
            destinox_widget = QTableWidgetItem(str(particula.destinox))
            destinoy_widget = QTableWidgetItem(str(particula.destinoy))
            velocidad_widget = QTableWidgetItem(str(particula.velocidad))
            red_widget = QTableWidgetItem(str(particula.red))
            blue_widget = QTableWidgetItem(str(particula.blue))
            green_widget = QTableWidgetItem(str(particula.green))
            d_widget = QTableWidgetItem(str(particula.d))

            self.ui.tabla.setItem(row, 0, identificacion_widget)
            self.ui.tabla.setItem(row, 1, origenx_widget)
            self.ui.tabla.setItem(row, 2, origeny_widget)
            self.ui.tabla.setItem(row, 3, destinox_widget)
            self.ui.tabla.setItem(row, 4, destinoy_widget)
            self.ui.tabla.setItem(row, 5, velocidad_widget)
            self.ui.tabla.setItem(row, 6, red_widget)
            self.ui.tabla.setItem(row, 7, blue_widget)
            self.ui.tabla.setItem(row, 8, green_widget)
            self.ui.tabla.setItem(row, 9, d_widget)

            row += 1

    @Slot()
    def click_abrir_archivo(self):
        ubicacion = QFileDialog.getOpenFileName(self, 'Abrir Archivo', '.',
                                                'JSON (*.json)')[0]
        if self.particulas.abrir(ubicacion):
            QMessageBox.information(self, "Éxito",
                                    "Se abrió el archivo" + ubicacion)
        else:
            QMessageBox.critical(self, "Error",
                                 "Error al abrir el archivo" + ubicacion)

    @Slot()
    def click_guardar_archivo(self):
        ubicacion = QFileDialog.getSaveFileName(self, 'Guadar Archivo', '.',
                                                'JSON(*.json)')[0]
        print(ubicacion)
        if self.particulas.guardar(ubicacion):
            QMessageBox.information(self, "Éxito",
                                    "Se pudo crear el archivo" + ubicacion)
        else:
            QMessageBox.critical(self, "Error",
                                 "No se pudo crear el archivo" + ubicacion)

    @Slot()
    def click_mostrar(self):
        self.ui.salida.clear()
        self.ui.salida.insertPlainText(str(self.particulas))

    @Slot()
    def click_agregar(self):
        identificacion = int(self.ui.id_lineEdit.text())
        origenx = int(self.ui.origenx_lineEdit.text())
        origeny = int(self.ui.origeny_lineEdit.text())
        destinox = int(self.ui.destinox_lineEdit.text())
        destinoy = int(self.ui.destinoy_lineEdit.text())
        velocidad = int(self.ui.velocidad_lineEdit.text())
        red = int(self.ui.red_lineEdit.text())
        green = int(self.ui.green_lineEdit.text())
        blue = int(self.ui.blue_lineEdit.text())

        particula = Particula(identificacion, origenx, origeny, destinox,
                              destinoy, velocidad, red, green, blue)
        self.particulas.agregar_final(particula)

    @Slot()
    def click_agregar_inicio(self):
        identificacion = int(self.ui.id_lineEdit.text())
        origenx = int(self.ui.origenx_lineEdit.text())
        origeny = int(self.ui.origeny_lineEdit.text())
        destinox = int(self.ui.destinox_lineEdit.text())
        destinoy = int(self.ui.destinoy_lineEdit.text())
        velocidad = int(self.ui.velocidad_lineEdit.text())
        red = int(self.ui.red_lineEdit.text())
        green = int(self.ui.green_lineEdit.text())
        blue = int(self.ui.blue_lineEdit.text())

        particula = Particula(identificacion, origenx, origeny, destinox,
                              destinoy, velocidad, red, green, blue)
        self.particulas.agregar_inicio(particula)
Beispiel #10
0
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.particulas = Particulas()

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.agregar_final_pushButton.clicked.connect(
            self.click_agregar_final)
        self.ui.agregar_inicio_pushButton.clicked.connect(
            self.click_agregar_inicio)
        self.ui.mostrar_pushButton.clicked.connect(self.click_mostrar)

        self.ui.actionAbrir.triggered.connect(self.action_abrir_archivo)
        self.ui.actionGuardar.triggered.connect(self.action_guardar_archivo)

        self.ui.mostrar_tabla_pushButton.clicked.connect(self.mostrar_tabla)
        self.ui.buscar_pushButton.clicked.connect(self.buscar_id)

        self.ui.dibujar_pushbutton.clicked.connect(self.dibujar)
        self.ui.limpiar_pushbutton.clicked.connect(self.limpiar)

        self.scene = QGraphicsScene()
        self.ui.graphicsView.setScene(self.scene)

        self.ui.ordenID_pushButton.clicked.connect(self.orden_ID)
        self.ui.orden_distancia_pushButton.clicked.connect(
            self.orden_Distancia)
        self.ui.orden_velocidad_pushButton.clicked.connect(
            self.orden_Velocidad)

        self.ui.mostrar_grafo_pushbutton.clicked.connect(self.mostrar_Grafo)
        self.grafo = QGraphicsScene()
        self.ui.grafica_grafo.setScene(self.grafo)

        self.ui.busqueda_ap_pushButton.clicked.connect(self.busquedas)

    def wheelEvent(self, event):
        if event.delta() > 0:
            self.ui.graphicsView.scale(1.2, 1.2)
        else:
            self.ui.graphicsView.scale(0.8, 0.8)

    @Slot()
    def busquedas(self):
        grafo = dict()
        for particula in self.particulas:
            or_x = str(particula.origenx).upper()
            or_y = str(particula.origeny).upper()
            de_x = str(particula.destinox).upper()
            de_y = str(particula.destinoy).upper()
            peso = int(particula.distancia)
            origen = or_x, or_y
            destino = de_x, de_y

            arista_o_d = (de_x, de_y, peso)
            arista_d_o = (or_x, or_y, peso)

            if origen in grafo:
                grafo[origen].append(arista_o_d)
            else:
                grafo[origen] = [arista_o_d]
            if destino in grafo:
                grafo[destino].append(arista_d_o)
            else:
                grafo[destino] = [arista_d_o]

        origenx = self.ui.Origenx_busqueda_lineEdit.text()
        origeny = self.ui.Origeny_busqueda_lineEdit.text()
        origen = origenx, origeny

        if self.ui.Origenx_busqueda_lineEdit.text(
        ) == "" or self.ui.Origeny_busqueda_lineEdit.text() == "":

            QMessageBox.warning(self, "Atencion",
                                "Alguno de los campos esta vacio.")

        else:
            print("Profundidad: ")
            print(busquedaProfundidad(grafo, origen))
            print("Amplitud: ")
            print(busquedaAmplitud(grafo, origen))

    @Slot()
    def mostrar_Grafo(self):
        grafo = dict()
        for particula in self.particulas:
            or_x = str(particula.origenx).upper()
            or_y = str(particula.origeny).upper()
            de_x = str(particula.destinox).upper()
            de_y = str(particula.destinoy).upper()
            peso = int(particula.distancia)
            origen = or_x, or_y
            destino = de_x, de_y

            arista_o_d = (de_x, de_y, peso)
            arista_d_o = (or_x, or_y, peso)

            if origen in grafo:
                grafo[origen].append(arista_o_d)
            else:
                grafo[origen] = [arista_o_d]
            if destino in grafo:
                grafo[destino].append(arista_d_o)
            else:
                grafo[destino] = [arista_d_o]
        strn = pformat(grafo, width=40, indent=1)
        for particula in self.particulas:
            pen = QPen()
            pen.setWidth(2)
            color = QColor(particula.red, particula.green, particula.blue)
            pen.setColor(color)
            self.grafo.addEllipse(particula.origenx, particula.origeny, 3, 3,
                                  pen)
            self.grafo.addEllipse(particula.destinox, particula.destinoy, 3, 3,
                                  pen)
            self.grafo.addLine(particula.origenx + 3, particula.origeny + 3,
                               particula.destinox, particula.destinoy, pen)
        self.ui.text_edit_grafo.clear()
        self.ui.text_edit_grafo.insertPlainText(strn)

    @Slot()
    def orden_ID(self):
        self.particulas.orden_id()

    @Slot()
    def orden_Distancia(self):
        self.particulas.orden_distancia()

    @Slot()
    def orden_Velocidad(self):
        self.particulas.orden_velocidad()

    @Slot()
    def dibujar(self):
        pen = QPen()
        pen.setWidth(2)

        for particula in self.particulas:
            color = QColor(particula.red, particula.green, particula.blue)
            pen.setColor(color)

            self.scene.addEllipse(particula.origenx, particula.origeny, 3, 3,
                                  pen)
            self.scene.addEllipse(particula.destinox, particula.destinoy, 3, 3,
                                  pen)
            self.scene.addLine(particula.origenx, particula.origeny,
                               particula.destinox, particula.destinoy, pen)

    @Slot()
    def limpiar(self):
        self.scene.clear()

    @Slot()
    def buscar_id(self):
        id_buscado = self.ui.busca_lineEdit.text()
        encontrado = False
        for particula in self.particulas:
            if id_buscado == particula.id:
                self.ui.tableWidget.clear()
                self.ui.tableWidget.setRowCount(1)
                self.ui.tableWidget.setColumnCount(10)
                headers = [
                    "Id", "Origen x", "Origen y", "Destino x", "Destino y",
                    "Velocidad", "Red", "Green", "Blue", "Distancia"
                ]
                self.ui.tableWidget.setHorizontalHeaderLabels(headers)

                id_widget = QTableWidgetItem(particula.id)
                origenx_widget = QTableWidgetItem(str(particula.origenx))
                origeny_widget = QTableWidgetItem(str(particula.origeny))
                destinox_widget = QTableWidgetItem(str(particula.destinox))
                destinoy_widget = QTableWidgetItem(str(particula.destinoy))
                velocidad_widget = QTableWidgetItem(str(particula.velocidad))
                red_widget = QTableWidgetItem(str(particula.red))
                green_widget = QTableWidgetItem(str(particula.green))
                blue_widget = QTableWidgetItem(str(particula.blue))
                distancia_widget = QTableWidgetItem(str(particula.distancia))

                self.ui.tableWidget.setItem(0, 0, id_widget)
                self.ui.tableWidget.setItem(0, 1, origenx_widget)
                self.ui.tableWidget.setItem(0, 2, origeny_widget)
                self.ui.tableWidget.setItem(0, 3, destinox_widget)
                self.ui.tableWidget.setItem(0, 4, destinoy_widget)
                self.ui.tableWidget.setItem(0, 5, velocidad_widget)
                self.ui.tableWidget.setItem(0, 6, red_widget)
                self.ui.tableWidget.setItem(0, 7, green_widget)
                self.ui.tableWidget.setItem(0, 8, blue_widget)
                self.ui.tableWidget.setItem(0, 9, distancia_widget)

                encontrado = True
                return
        if not encontrado:
            self.ui.tableWidget.clear()
            QMessageBox.warning(
                self, "Atencion",
                f'La particula con el id "{id_buscado}" no fue encontrado')

    @Slot()
    def mostrar_tabla(self):
        self.ui.tableWidget.setColumnCount(10)
        headers = [
            "Id", "Origen x", "Origen y", "Destino x", "Destino y",
            "Velocidad", "Red", "Green", "Blue", "Distancia"
        ]
        self.ui.tableWidget.setHorizontalHeaderLabels(headers)

        self.ui.tableWidget.setRowCount(len(self.particulas))
        row = 0
        for particula in self.particulas:
            id_widget = QTableWidgetItem(particula.id)
            origenx_widget = QTableWidgetItem(str(particula.origenx))
            origeny_widget = QTableWidgetItem(str(particula.origeny))
            destinox_widget = QTableWidgetItem(str(particula.destinox))
            destinoy_widget = QTableWidgetItem(str(particula.destinoy))
            velocidad_widget = QTableWidgetItem(str(particula.velocidad))
            red_widget = QTableWidgetItem(str(particula.red))
            green_widget = QTableWidgetItem(str(particula.green))
            blue_widget = QTableWidgetItem(str(particula.blue))
            distancia_widget = QTableWidgetItem(str(particula.distancia))

            self.ui.tableWidget.setItem(row, 0, id_widget)
            self.ui.tableWidget.setItem(row, 1, origenx_widget)
            self.ui.tableWidget.setItem(row, 2, origeny_widget)
            self.ui.tableWidget.setItem(row, 3, destinox_widget)
            self.ui.tableWidget.setItem(row, 4, destinoy_widget)
            self.ui.tableWidget.setItem(row, 5, velocidad_widget)
            self.ui.tableWidget.setItem(row, 6, red_widget)
            self.ui.tableWidget.setItem(row, 7, green_widget)
            self.ui.tableWidget.setItem(row, 8, blue_widget)
            self.ui.tableWidget.setItem(row, 9, distancia_widget)

            row += 1

    @Slot()
    def action_abrir_archivo(self):
        # print('abrir_archivo')
        ubicacion = QFileDialog.getOpenFileName(self, 'Abrir Archivo', '.',
                                                'JSON (*.json)')[0]
        if self.particulas.abrir(ubicacion):
            QMessageBox.information(self, "Exito",
                                    "Se abrio el archivo " + ubicacion)
        else:
            QMessageBox.critical(self, "Error",
                                 "Error al abrir el archivo" + ubicacion)

    @Slot()
    def action_guardar_archivo(self):
        # print('guardar archivo')
        ubicacion = QFileDialog.getSaveFileName(self, 'Guardar Archivo', '.',
                                                'JSON (*.json)')[0]
        print(ubicacion)
        if self.particulas.guardar(ubicacion):
            QMessageBox.information(self, "Exito",
                                    "Se creo el archivo " + ubicacion)
        else:
            QMessageBox.critical(self, "Error",
                                 "No se pudo crear el archivo" + ubicacion)

    @Slot()
    def click_agregar_final(self):
        id = self.ui.id_lineEdit.text()
        origen_x = self.ui.origen_x_spinBox.value()
        origen_y = self.ui.origen_y_spinBox.value()
        destino_x = self.ui.destino_x_spinBox.value()
        destino_y = self.ui.destino_y_spinBox.value()
        velocidad = self.ui.velocidad_lineEdit.text()
        red = self.ui.red_spinBox.value()
        green = self.ui.green_spinBox.value()
        blue = self.ui.blue_spinBox.value()

        particula = Particula(id, origen_x, origen_y, destino_x, destino_y,
                              velocidad, red, green, blue)
        self.particulas.agregar_final(particula)

    @Slot()
    def click_agregar_inicio(self):
        id = self.ui.id_lineEdit.text()
        origen_x = self.ui.origen_x_spinBox.value()
        origen_y = self.ui.origen_y_spinBox.value()
        destino_x = self.ui.destino_x_spinBox.value()
        destino_y = self.ui.destino_y_spinBox.value()
        velocidad = self.ui.velocidad_lineEdit.text()
        red = self.ui.red_spinBox.value()
        green = self.ui.green_spinBox.value()
        blue = self.ui.blue_spinBox.value()

        particula = Particula(id, origen_x, origen_y, destino_x, destino_y,
                              velocidad, red, green, blue)
        self.particulas.agregar_inicio(particula)

    @Slot()
    def click_mostrar(self):
        self.ui.salida.clear()
        self.ui.salida.insertPlainText(str(self.particulas))
Beispiel #11
0
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()  

        self.particulas = Particulas()
        self.grafo = Grafo()

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.finalcap.clicked.connect(self.click_agregarfinal)
        self.ui.Iniciocap.clicked.connect(self.click_agregarinicio)      
        self.ui.Mostrar.clicked.connect(self.click_mostrar)
        self.ui.OrigenX.valueChanged.connect(self.setValue)
        self.ui.OrigenY.valueChanged.connect(self.setValue)
        self.ui.DestinoX.valueChanged.connect(self.setValue)
        self.ui.DestinoY.valueChanged.connect(self.setValue)
        self.ui.Verde.valueChanged.connect(self.setValue)
        self.ui.Rojo.valueChanged.connect(self.setValue)
        self.ui.Azul.valueChanged.connect(self.setValue)

        self.ui.actionAbrir.triggered.connect(self.action_abrir_archivo)
        self.ui.actionGuardar.triggered.connect(self.action_guardar_archivo)
        self.ui.actionPor_ID.triggered.connect(self.action_ordenarid)
        self.ui.actionVelocidad.triggered.connect(self.action_ordenarvelocidad)
        self.ui.actionDistancia.triggered.connect(self.action_ordenardistancia)
        self.ui.actionGrafo.triggered.connect(self.action_transformaragrafo)
        

        self.ui.Mostrartabla_push.clicked.connect(self.Mostrar_tabla)
        self.ui.Buscar_push.clicked.connect(self.buscar_id)
        
        self.ui.Dibujarpush.clicked.connect(self.dibujar)
        self.ui.Limpiarpush.clicked.connect(self.limpiar)

        self.scene = QGraphicsScene()  
        self.ui.graphicsView.setScene(self.scene)

    def wheelEvent(self, event):
        if event.delta() > 0:
            self.ui.graphicsView.scale(1.2, 1.2)
        else:
            self.ui.graphicsView.scale(0.8, 0.8)

    @Slot()
    def Mostrar_tabla(self):
        self.ui.Tabla.setColumnCount(10)
        headers = ["Id", "origen_x", "origen_y", "destino_x", "destino_y", "velocidad","rojo", "verde","azul", "distancia"]
        self.ui.Tabla.setHorizontalHeaderLabels(headers)

        self.ui.Tabla.setRowCount(len(self.particulas))

        row = 0
        for particula in self.particulas:
            Id_widget = QTableWidgetItem(str(particula.Id))
            origen_x_widget = QTableWidgetItem(str(particula.origen_x))
            origen_y_widget = QTableWidgetItem(str(particula. origen_y))
            destino_x_widget = QTableWidgetItem(str(particula.destino_x))           
            destino_y_widget = QTableWidgetItem(str(particula.destino_y))
            velocidad_widget = QTableWidgetItem(str(particula.velocidad))
            rojo_widget = QTableWidgetItem(str(particula.rojo))
            verde_widget = QTableWidgetItem(str(particula.verde))
            azul_widget = QTableWidgetItem(str(particula.azul))
            distancia_widget = QTableWidgetItem(str(particula.distancia))

            self.ui.Tabla.setItem(row, 0,  Id_widget)
            self.ui.Tabla.setItem(row, 1,  origen_x_widget)
            self.ui.Tabla.setItem(row, 2,  origen_y_widget)
            self.ui.Tabla.setItem(row, 3,  destino_x_widget)
            self.ui.Tabla.setItem(row, 4,  destino_y_widget)
            self.ui.Tabla.setItem(row, 5,  velocidad_widget)
            self.ui.Tabla.setItem(row, 6,  rojo_widget)
            self.ui.Tabla.setItem(row, 7,  verde_widget)
            self.ui.Tabla.setItem(row, 8,  azul_widget)
            self.ui.Tabla.setItem(row, 9,  distancia_widget)

            row += 1
            
    @Slot()
    def buscar_id(self):

        headers = ["Id", "origen_x", "origen_y", "destino_x", "destino_y", "velocidad","rojo", "verde","azul", "distancia"]
        Id = self.ui.LineadeBusqueda.text()
        
        encontrado = False

        for particula in self.particulas:
            if Id == str(particula.Id):
                self.ui.Tabla.clear()
                self.ui.Tabla.setRowCount(1)
                self.ui.Tabla.setColumnCount(10)
                self.ui.Tabla.setHorizontalHeaderLabels(headers)

                Id_widget = QTableWidgetItem(str(particula.Id))
                origen_x_widget = QTableWidgetItem(str(particula.origen_x))
                origen_y_widget = QTableWidgetItem(str(particula. origen_y))
                destino_x_widget = QTableWidgetItem(str(particula.destino_x))           
                destino_y_widget = QTableWidgetItem(str(particula.destino_y))
                velocidad_widget = QTableWidgetItem(str(particula.velocidad))
                rojo_widget = QTableWidgetItem(str(particula.rojo))
                verde_widget = QTableWidgetItem(str(particula.verde))
                azul_widget = QTableWidgetItem(str(particula.azul))
                distancia_widget = QTableWidgetItem(str(particula.distancia))

                self.ui.Tabla.setItem(0, 0,  Id_widget)
                self.ui.Tabla.setItem(0, 1,  origen_x_widget)
                self.ui.Tabla.setItem(0, 2,  origen_y_widget)
                self.ui.Tabla.setItem(0, 3,  destino_x_widget)
                self.ui.Tabla.setItem(0, 4,  destino_y_widget)
                self.ui.Tabla.setItem(0, 5,  velocidad_widget)
                self.ui.Tabla.setItem(0, 6,  rojo_widget)
                self.ui.Tabla.setItem(0, 7,  verde_widget)
                self.ui.Tabla.setItem(0, 8,  azul_widget)
                self.ui.Tabla.setItem(0, 9,  distancia_widget)

                encontrado = True
                return
        if not encontrado:
            QMessageBox.warning(
                self,
                "Atencion",
                f'La particula con ID = "{Id}" no fue encontrado'
            )


    @Slot()
    def action_abrir_archivo(self):
       # print('Abrir Archivo')
        ubicacion = QFileDialog.getOpenFileName(
           self,
           'Abrir Archivo',
           '.',
           'JSON (*.json)'
        )[0]
        if self.particulas.abrir(ubicacion):
            QMessageBox.information(
                self,
                "Exito",
                "Se abrió el archivo " + ubicacion
            )
        else:
            QMessageBox.critical(
                self,
                "Error",
                "Error al abrir el archivo " + ubicacion
            )

    @Slot()
    def action_guardar_archivo(self):
        #print('Guardar Archivo')
        ubicacion = QFileDialog.getSaveFileName(
            self,
            'Guardar Archivo',
            '.',
            'JSON (*.json)'
        )[0]
        print(ubicacion)
        if self.particulas.guardar(ubicacion):
            QMessageBox.information(
                self,
                "Exito",
                "Se pudo crear el archivo " + ubicacion
            )
        else:
            QMessageBox.critical(
               self,
               "Error",
               "No se pudo crear el archivo " + ubicacion
            )
     
    @Slot()
    def click_agregarfinal(self):
        Id = self.ui.ID.value()
        Ox = self.ui.OrigenX.value()   
        Oy = self.ui.OrigenY.value() 
        Dx = self.ui.DestinoX.value()
        Dy = self.ui.DestinoY.value()
        Vel = self.ui.Velocidad.value()
        Red = self.ui.Rojo.value()       
        Green = self.ui.Verde.value()   
        Blue = self.ui.Azul.value()
        particula = Particula(Id,Ox,Oy,Dx,Dy,Vel,Red,Green,Blue)
        self.particulas.agregar_final(particula)
        
        #print(particula)
        #self.ui.salida.insertPlainText(str(IDD)+str(Ox)+str(Oy)+str(Dx)+str(Dy)+str(Vel)+str(Red)+str(Blue)+str(Green))

    @Slot()
    def click_agregarinicio(self):
        Id = self.ui.ID.value()
        Ox = self.ui.OrigenX.value()   
        Oy = self.ui.OrigenY.value() 
        Dx = self.ui.DestinoX.value()
        Dy = self.ui.DestinoY.value()
        Vel = self.ui.Velocidad.value()
        Red = self.ui.Rojo.value()        
        Green = self.ui.Verde.value()
        Blue = self.ui.Azul.value()
        particula = Particula(Id,Ox,Oy,Dx,Dy,Vel,Red,Blue,Green)
        self.particulas.agregar_inicio(particula)

        #print(IDD,Ox,Oy,Dx,Dy,Vel,Red,Blue,Green)
        #self.ui.salida.insertPlainText(str(IDD)+str(Ox)+str(Oy)+str(Dx)+str(Dy)+str(Vel)+str(Red)+str(Blue)+str(Green))

    @Slot()
    def click_mostrar(self):
       # self.particulas.mostrar()
       self.ui.salida.clear()
       self.ui.salida.insertPlainText(str(self.particulas))
       
    
    @Slot()
    def setValue(self,valor):
       self.ui.NumAct.clear()
       self.ui.NumAct.insertPlainText(str(valor))

    @Slot()
    def dibujar(self):
        pen = QPen()
        pen.setWidth(3)
        
        for particula in self.particulas:

         r= particula.rojo
         g= particula.verde
         b= particula.azul
         color = QColor(r, g, b)
         pen.setColor(color)
         
         pox= particula.origen_x
         poy= particula.origen_y
         pdx= particula.destino_x
         pdy= particula.destino_y

         self.scene.addEllipse(pox, poy, 3, 3, pen)
         self.scene.addEllipse(pdx, pdy, 3, 3, pen)
         self.scene.addLine(pox+3, poy+1, pdx+2, pdy+1, pen)

    @Slot()
    def limpiar(self):
        self.scene.clear()  

    @Slot()
    def action_ordenarid(self):
        self.particulas.__sortid__()

    @Slot()
    def action_ordenarvelocidad(self):
        self.particulas.__sortvel__()

    @Slot()
    def action_ordenardistancia(self):
        self.particulas.__sortdis__()
            
    @Slot()
    def action_transformaragrafo(self):   
        for particula in self.particulas:
            self.grafo.__Add__(particula.origen_x,particula.origen_y,particula.destino_x,
            particula.destino_y)
         
        self.grafo.Mostrargrafo()
        self.ui.salida.clear()
        self.ui.salida.insertPlainText(str(pformat(self.grafo.Grafo, width=40, indent=1)))
Beispiel #12
0
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.particulas = Particulas()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.agregar_inicio_pushButton.clicked.connect(
            self.click_agregar_inicio)
        self.ui.agregar_final_pushButton.clicked.connect(
            self.click_agregar_final)
        self.ui.mostrar_pushButton.clicked.connect(self.click_mostrar)

        self.ui.actionAbrir.triggered.connect(self.action_abrir_archivo)
        self.ui.actionGuardar.triggered.connect(self.action_guardar_archivo)

    @Slot()
    def action_abrir_archivo(self):
        ubicacion = QFileDialog.getOpenFileName(self, "Abrir archivo", ".",
                                                "JSON (*.json)")[0]
        if self.particulas.abrir(ubicacion):
            QMessageBox.information(self, "Éxito",
                                    "Se abrió el archivo" + ubicacion)
        else:
            QMessageBox.critical(self, "Error",
                                 "Error al abrir el archivo" + ubicacion)

    @Slot()
    def action_guardar_archivo(self):
        ubicacion = QFileDialog.getSaveFileName(self, "Guardar archivo", ".",
                                                "JSON (*.json)")[0]
        print(ubicacion)
        if self.particulas.guardar(ubicacion):
            QMessageBox.information(self, "Éxito",
                                    "Se pudo crear el archivo" + ubicacion)
        else:
            QMessageBox.critical(self, "Error",
                                 "No se pudo crear el archivo" + ubicacion)

    @Slot()
    def click_agregar_inicio(self):
        id = self.ui.id_lineEdit.text()
        origen_x = self.ui.origen_x_spinBox.value()
        origen_y = self.ui.origen_y_spinBox.value()
        destino_x = self.ui.destino_x_spinBox.value()
        destino_y = self.ui.destino_y_spinBox.value()
        velocidad = self.ui.velocidad_spinBox.value()
        red = self.ui.red_spinBox.value()
        green = self.ui.green_spinBox.value()
        blue = self.ui.blue_spinBox.value()

        particula = Particula(id, origen_x, origen_y, destino_x, destino_y,
                              velocidad, red, green, blue)
        self.particulas.agregar_inicio(particula)

    @Slot()
    def click_agregar_final(self):
        id = self.ui.id_lineEdit.text()
        origen_x = self.ui.origen_x_spinBox.value()
        origen_y = self.ui.origen_y_spinBox.value()
        destino_x = self.ui.destino_x_spinBox.value()
        destino_y = self.ui.destino_y_spinBox.value()
        velocidad = self.ui.velocidad_spinBox.value()
        red = self.ui.red_spinBox.value()
        green = self.ui.green_spinBox.value()
        blue = self.ui.blue_spinBox.value()

        particula = Particula(id, origen_x, origen_y, destino_x, destino_y,
                              velocidad, red, green, blue)
        self.particulas.agregar_final(particula)

    @Slot()
    def click_mostrar(self):
        self.ui.cuadro.clear()
        self.ui.cuadro.insertPlainText(str(self.particulas))
Beispiel #13
0
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.particulas = Particulas()

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.finalcap.clicked.connect(self.click_agregarfinal)
        self.ui.Iniciocap.clicked.connect(self.click_agregarinicio)
        self.ui.Mostrar.clicked.connect(self.click_mostrar)
        self.ui.OrigenX.valueChanged.connect(self.setValue)
        self.ui.OrigenY.valueChanged.connect(self.setValue)
        self.ui.DestinoX.valueChanged.connect(self.setValue)
        self.ui.DestinoY.valueChanged.connect(self.setValue)
        self.ui.Verde.valueChanged.connect(self.setValue)
        self.ui.Rojo.valueChanged.connect(self.setValue)
        self.ui.Azul.valueChanged.connect(self.setValue)

        self.ui.actionAbrir.triggered.connect(self.action_abrir_archivo)
        self.ui.actionGuardar.triggered.connect(self.action_guardar_archivo)

        self.ui.Mostrartabla_push.clicked.connect(self.Mostrar_tabla)
        self.ui.Buscar_push.clicked.connect(self.buscar_id)

    @Slot()
    def Mostrar_tabla(self):
        self.ui.Tabla.setColumnCount(10)
        headers = [
            "Id", "origen_x", "origen_y", "destino_x", "destino_y",
            "velocidad", "rojo", "verde", "azul", "distancia"
        ]
        self.ui.Tabla.setHorizontalHeaderLabels(headers)

        self.ui.Tabla.setRowCount(len(self.particulas))

        row = 0
        for particula in self.particulas:
            Id_widget = QTableWidgetItem(str(particula.Id))
            origen_x_widget = QTableWidgetItem(str(particula.origen_x))
            origen_y_widget = QTableWidgetItem(str(particula.origen_y))
            destino_x_widget = QTableWidgetItem(str(particula.destino_x))
            destino_y_widget = QTableWidgetItem(str(particula.destino_y))
            velocidad_widget = QTableWidgetItem(str(particula.velocidad))
            rojo_widget = QTableWidgetItem(str(particula.rojo))
            verde_widget = QTableWidgetItem(str(particula.Id))
            azul_widget = QTableWidgetItem(str(particula.azul))
            distancia_widget = QTableWidgetItem(str(particula.distancia))

            self.ui.Tabla.setItem(row, 0, Id_widget)
            self.ui.Tabla.setItem(row, 1, origen_x_widget)
            self.ui.Tabla.setItem(row, 2, origen_y_widget)
            self.ui.Tabla.setItem(row, 3, destino_x_widget)
            self.ui.Tabla.setItem(row, 4, destino_y_widget)
            self.ui.Tabla.setItem(row, 5, velocidad_widget)
            self.ui.Tabla.setItem(row, 6, rojo_widget)
            self.ui.Tabla.setItem(row, 7, verde_widget)
            self.ui.Tabla.setItem(row, 8, azul_widget)
            self.ui.Tabla.setItem(row, 9, distancia_widget)

            row += 1

    @Slot()
    def buscar_id(self):

        headers = [
            "Id", "origen_x", "origen_y", "destino_x", "destino_y",
            "velocidad", "rojo", "verde", "azul", "distancia"
        ]
        Id = self.ui.LineadeBusqueda.text()

        encontrado = False

        for particula in self.particulas:
            if Id == str(particula.Id):
                self.ui.Tabla.clear()
                self.ui.Tabla.setRowCount(1)
                self.ui.Tabla.setColumnCount(10)
                self.ui.Tabla.setHorizontalHeaderLabels(headers)

                Id_widget = QTableWidgetItem(str(particula.Id))
                origen_x_widget = QTableWidgetItem(str(particula.origen_x))
                origen_y_widget = QTableWidgetItem(str(particula.origen_y))
                destino_x_widget = QTableWidgetItem(str(particula.destino_x))
                destino_y_widget = QTableWidgetItem(str(particula.destino_y))
                velocidad_widget = QTableWidgetItem(str(particula.velocidad))
                rojo_widget = QTableWidgetItem(str(particula.rojo))
                verde_widget = QTableWidgetItem(str(particula.Id))
                azul_widget = QTableWidgetItem(str(particula.azul))
                distancia_widget = QTableWidgetItem(str(particula.distancia))

                self.ui.Tabla.setItem(0, 0, Id_widget)
                self.ui.Tabla.setItem(0, 1, origen_x_widget)
                self.ui.Tabla.setItem(0, 2, origen_y_widget)
                self.ui.Tabla.setItem(0, 3, destino_x_widget)
                self.ui.Tabla.setItem(0, 4, destino_y_widget)
                self.ui.Tabla.setItem(0, 5, velocidad_widget)
                self.ui.Tabla.setItem(0, 6, rojo_widget)
                self.ui.Tabla.setItem(0, 7, verde_widget)
                self.ui.Tabla.setItem(0, 8, azul_widget)
                self.ui.Tabla.setItem(0, 9, distancia_widget)

                encontrado = True
                return
        if not encontrado:
            QMessageBox.warning(
                self, "Atencion",
                f'La particula con ID = "{Id}" no fue encontrado')

    @Slot()
    def action_abrir_archivo(self):
        # print('Abrir Archivo')
        ubicacion = QFileDialog.getOpenFileName(self, 'Abrir Archivo', '.',
                                                'JSON (*.json)')[0]
        if self.particulas.abrir(ubicacion):
            QMessageBox.information(self, "Exito",
                                    "Se abrió el archivo " + ubicacion)
        else:
            QMessageBox.critical(self, "Error",
                                 "Error al abrir el archivo " + ubicacion)

    @Slot()
    def action_guardar_archivo(self):
        #print('Guardar Archivo')
        ubicacion = QFileDialog.getSaveFileName(self, 'Guardar Archivo', '.',
                                                'JSON (*.json)')[0]
        print(ubicacion)
        if self.particulas.guardar(ubicacion):
            QMessageBox.information(self, "Exito",
                                    "Se pudo crear el archivo " + ubicacion)
        else:
            QMessageBox.critical(self, "Error",
                                 "No se pudo crear el archivo " + ubicacion)

    @Slot()
    def click_agregarfinal(self):
        Id = self.ui.ID.value()
        Ox = self.ui.OrigenX.value()
        Oy = self.ui.OrigenY.value()
        Dx = self.ui.DestinoX.value()
        Dy = self.ui.DestinoY.value()
        Vel = self.ui.Velocidad.value()
        Red = self.ui.Rojo.value()
        Blue = self.ui.Azul.value()
        Green = self.ui.Verde.value()

        particula = Particula(Id, Ox, Oy, Dx, Dy, Vel, Red, Blue, Green)
        self.particulas.agregar_final(particula)

        #print(particula)
        #self.ui.salida.insertPlainText(str(IDD)+str(Ox)+str(Oy)+str(Dx)+str(Dy)+str(Vel)+str(Red)+str(Blue)+str(Green))

    @Slot()
    def click_agregarinicio(self):
        Id = self.ui.ID.value()
        Ox = self.ui.OrigenX.value()
        Oy = self.ui.OrigenY.value()
        Dx = self.ui.DestinoX.value()
        Dy = self.ui.DestinoY.value()
        Vel = self.ui.Velocidad.value()
        Red = self.ui.Rojo.value()
        Blue = self.ui.Azul.value()
        Green = self.ui.Verde.value()

        particula = Particula(Id, Ox, Oy, Dx, Dy, Vel, Red, Blue, Green)
        self.particulas.agregar_inicio(particula)

        #print(IDD,Ox,Oy,Dx,Dy,Vel,Red,Blue,Green)
        #self.ui.salida.insertPlainText(str(IDD)+str(Ox)+str(Oy)+str(Dx)+str(Dy)+str(Vel)+str(Red)+str(Blue)+str(Green))

    @Slot()
    def click_mostrar(self):
        # self.particulas.mostrar()
        self.ui.salida.clear()
        self.ui.salida.insertPlainText(str(self.particulas))

    @Slot()
    def setValue(self, valor):
        self.ui.NumAct.clear()
        self.ui.NumAct.insertPlainText(str(valor))