Python: ¿cómo guardar el lienzo en pyqt5?

Hay tantas opciones proporcionadas por Python para desarrollar una aplicación GUI y PyQt5 es una de ellas. PyQt5 es un kit de herramientas GUI multiplataforma, un conjunto de enlaces de Python para Qt v5. Uno puede desarrollar una aplicación de escritorio interactiva con tanta facilidad debido a las herramientas y la simplicidad que ofrece esta biblioteca.

En este tutorial, veremos cómo guardar lienzos en pyqt5. Dibujamos cosas en lienzo usando la clase QPainter .

QPainter: el sistema de pintura de Qt puede renderizar gráficos vectoriales, imágenes y delinear texto basado en fuentes con una precisión de subpíxeles usando suavizado para mejorar la calidad de renderizado.

En este artículo, creamos un lienzo y dibujaremos una línea en él y veremos cómo guardar ese lienzo como archivo de imagen en la ubicación deseada en el sistema. A continuación se muestra la implementación. 

Python3

# importing modules
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import * import sys
 
# creating class for window
class Window(QMainWindow):
    def __init__(self):
        super().__init__()
 
 
        title = "Paint and save Application"
 
        top = 400
        left = 400
        width = 800
        height = 600
 
        # setting title of window
        self.setWindowTitle(title)
 
        # setting geometry
        self.setGeometry(top, left, width, height)
 
        # creating canvas
        self.image = QImage(self.size(), QImage.Format_RGB32)
 
        # setting canvas color to white
        self.image.fill(Qt.white)
 
        # creating menu bar
        mainMenu = self.menuBar()
 
        # adding file menu in it
        fileMenu = mainMenu.addMenu("File")
 
        # creating save action
        saveAction = QAction("Save", self)
 
        # setting save action shortcut
        saveAction.setShortcut("Ctrl + S")
 
        # adding save action to filemenu
        fileMenu.addAction(saveAction)
 
        # setting triggered method
        saveAction.triggered.connect(self.save)
 
        # calling draw_something method
        self.draw_something()
 
    # paintEvent for creating blank canvas
    def paintEvent(self, event):
        canvasPainter = QPainter(self)
        canvasPainter.drawImage(self.rect(), self.image,
                                      self.image.rect())
         
    # this method will draw a line
    def draw_something(self):
         
        painter = QPainter(self.image)
         
        painter.setPen(QPen(Qt.black, 5, Qt.SolidLine,
                            Qt.RoundCap, Qt.RoundJoin))
         
        # drawing a line
        painter.drawLine(100, 100, 300, 300)
         
        # updating it to canvas
        self.update()
     
    # save method
    def save(self):
         
        # selecting file path
        filePath, _ = QFileDialog.getSaveFileName(self, "Save Image", "",
                         "PNG(*.png);;JPEG(*.jpg *.jpeg);;All Files(*.*) ")
 
        # if file path is blank return back
        if filePath == "":
            return
         
        # saving canvas at desired path
        self.image.save(filePath)
 
# main method
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    window.show()
     
    # looping for window
    sys.exit(app.exec())

Salida: 
Después de ejecutar la ventana de código aparecerá con un lienzo de color blanco en el que se dibuja la línea. 

Después de hacer clic en el menú Archivo, aparecerá el botón Guardar. 
 

Cuando se presiona el botón Guardar, se le pedirá la ubicación y el nombre y la imagen se guardarán en la ubicación deseada. 

Este código guardará el lienzo en formato png en la ubicación deseada.
 

Publicación traducida automáticamente

Artículo escrito por rakshitarora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *