Как сохранить QTableWidget как изображение?

Необходимо сохранить QTableWidget как изображение.

import sys
from PyQt5.QtWidgets import *

class Tabdle(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

    def saveImage(self, fileName, fileFormat):
        self.image.save(fileName, fileFormat)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QWidget()
    btnSave  = QPushButton("Сохранить таблицу -> image.png")

    qtable = QTableWidget()
    qtable.insertRow(0)
    qtable.insertRow(1)
    qtable.insertRow(2)
    qtable.insertColumn(0)
    qtable.insertColumn(1)
    qtable.setItem(0, 0, QTableWidgetItem("text1"))
    qtable.setItem(0, 1, QTableWidgetItem("text2"))

    w.setLayout(QVBoxLayout())
    w.layout().addWidget(btnSave)
    w.layout().addWidget(qtable)

    w.show()
    sys.exit(app.exec_())   

На выходе должна получиться вот такая картинка:

изображение таблицы


Ответы (1 шт):

Автор решения: S. Nick

Как вариант:

import sys
from PyQt5.Qt import *


def btnClick(w):
    fname = "q1333349.png"

    pixmap = QPixmap(w.qtable.size())
    w.qtable.render(QPainter(pixmap))
    pixmap.save(fname) 


class MainWindow(QWidget): 
    def __init__(self):
        super().__init__()
        
        btnSave  = QPushButton("Сохранить таблицу -> image.png")
        btnSave.clicked.connect(lambda: btnClick(self))

        self.qtable = QTableWidget()
        self.qtable.insertRow(0)
        self.qtable.insertRow(1)
        self.qtable.insertRow(2)
        self.qtable.insertColumn(0)
        self.qtable.insertColumn(1)
        self.qtable.setItem(0, 0, QTableWidgetItem("text1"))
        self.qtable.setItem(0, 1, QTableWidgetItem("text2"))

        layout = QVBoxLayout(self)
        layout.addWidget(self.qtable) 
        layout.addWidget(btnSave)
        

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MainWindow()
    w.resize(250, 170)
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка