es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PYQT5 agregar múltiples imágenes a la ventana

No puedo agregar dos imágenes a una ventana en Python. He buscado en otros hilos del foro y no me ayudaron. Solo se agrega una con la función QImage. Quiero que tanto la imagen original como la imagen en la que haré cambios aparezcan en el programa. Simplemente, no pude agregar la imagen original, las operaciones en la imagen normal, etc. Puedo hacerlo, no hay problema. Dicen QPixmap o algo así, pero no entiendo. Adjunto los códigos:

def openImage(self, image_label):
    image_file, _ = QFileDialog.getOpenFileName(self, "Abrir imagen", 
            "", "Archivos PNG (*.png);;Archivos JPG (*.jpeg *.jpg );;Archivos Bitmap (*.bmp);;\
            Archivos GIF (*.gif)")

    if image_file:
        self.parent.zoom_factor = 1
        self.parent.print_act.setEnabled(True)
        self.parent.updateActions()

        self.parent.brightness_slider.setValue(0)

        image_format = self.image.format()
        self.image = QImage(image_file) #área manipulada
        self.original_image = self.image.copy() #Imagen original

        self.setPixmap(QPixmap().fromImage(self.image))
        self.resize(self.pixmap().size())
    elif image_file == "":
        # El usuario seleccionó Cancelar
        pass
    else:
        QMessageBox.information(self, "Error", 
            "No se pudo abrir la imagen.", QMessageBox.Ok)

Muchas gracias de antemano. El modelo que quiero hacer es este:
Imagen

Solo lo puse para que entiendas cómo quiero hacerlo. No es porque me escribas un proyecto desde cero.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basado en tu código y explicación, parece que quieres mostrar tanto la imagen original como la imagen manipulada en la misma ventana. Has mencionado que has intentado usar QImage para mostrar una imagen pero no has podido descifrar cómo mostrar ambas imágenes. Aquí tienes algunas sugerencias que podrían ayudarte:

    1. Crea un nuevo widget de etiqueta para mostrar la segunda imagen:

    Dado que ya tienes un widget de etiqueta (image_label) para mostrar la primera imagen, puedes crear un nuevo widget de etiqueta para mostrar la segunda imagen. Aquí tienes un ejemplo:

    self.original_image_label = QLabel(self)
    self.original_image_label.setGeometry(0, 0, ancho, alto) # establece el tamaño de la etiqueta
    self.original_image_label.setPixmap(QPixmap.fromImage(self.original_image)) # establece la imagen pixmap
    
    1. Usa un gestor de diseño para organizar las etiquetas:

    Puedes usar un gestor de diseño (por ejemplo, QVBoxLayout o QHBoxLayout) para organizar las dos etiquetas una al lado de la otra. Aquí tienes un ejemplo:

    layout = QHBoxLayout()
    layout.addWidget(image_label)
    layout.addWidget(original_image_label)
    self.setLayout(layout)
    
    1. Usa QPixmap para mostrar las imágenes:

    En lugar de usar QImage, puedes usar QPixmap para mostrar las imágenes. Aquí tienes un ejemplo:

    self.image = QPixmap(archivo_imagen)
    self.original_image = QPixmap(archivo_imagen_original)
    self.image_label.setPixmap(self.image)
    self.original_image_label.setPixmap(self.original_image)
    

    Ten en cuenta que debes proporcionar las rutas de los archivos de la imagen original y la imagen manipulada.

    Espero que estas sugerencias te ayuden a resolver tu problema. Hazme saber si tienes alguna pregunta o necesitas más ayuda.

Comments are closed.