Как сохранить 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_())

