问题描述
我有一个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 (将#修改为@)