如何解决在pyqt5 GUI中从qtablewidget和图创建pdf报告
我有一个PyQt5 GUI,可以在其中从数据库中检索数据,并将其插入到多个表格小部件中并制作绘图小部件。我想用这些小部件(表格和图表)的内容制作一个PDF报告。在PyQt5中最有效的方法是什么?
我正在使用以下功能,但是输出质量不好。另外,如何设置pdf中小部件的自定义大小?
下面是MRE。
import sys
from PyQt5 import QtGui,QtCore,QtWidgets,QtPrintSupport
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import *
class Window(QWidget):
def __init__(self,rows,columns):
QWidget.__init__(self)
self.table = QTableWidget(rows,columns,self)
self.table.setSpan(0,1,5)
self.table.setItem(0,QTableWidgetItem("Master Title"))
self.table.setSpan(1,3)
self.table.setItem(1,QTableWidgetItem("Title 1"))
self.table.item(1,0).setTextAlignment(Qt.AlignCenter)
self.table.setSpan(2,2,2)
self.table.setItem(2,QTableWidgetItem("Merge 2x2"))
self.table.item(2,0).setTextAlignment(Qt.AlignCenter)
for column in range(columns - 1):
for row in range(4,rows - 1):
item = QTableWidgetItem('Text%d' % row)
self.table.setItem(row,column,item)
layout = QVBoxLayout(self)
layout.addWidget(self.table)
self.handleSave(self.table,'table1')
def handleSave(self,widget,filename):
printer = QtPrintSupport.QPrinter(QtPrintSupport.QPrinter.HighResolution)
printer.setPageSize(QtPrintSupport.QPrinter.A6)
printer.setColorMode(QtPrintSupport.QPrinter.Color)
printer.setOutputFormat(QtPrintSupport.QPrinter.PdfFormat)
printer.setOutputFileName(filename + '.pdf')
pixmap = QtWidgets.QWidget.grab(widget).scaled(
printer.pageRect(QtPrintSupport.QPrinter.DevicePixel).size().toSize(),QtCore.Qt.KeepAspectRatio)
painter = QtGui.QPainter(printer)
painter.drawPixmap(0,pixmap)
painter.end()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window(10,5)
window.resize(640,480)
window.show()
sys.exit(app.exec_())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。