我编写了一个程序,该程序获取输入,并根据输入将图像插入qtablewidget单元中。我有一个打印按钮,可打开一个打印对话框(有效)并使用QPainter打印表格。
我的问题是表格以较小的比例打印(您对此不太了解)。如何调整打印尺寸?
from RD2 import Ui_RD
import sys
from PyQt5 import QtCore, QtGui, QtWidgets, QtPrintSupport
from PyQt5.QtGui import QPainter, QImage, QPen, QColor, QPixmap
from PyQt5.QtPrintSupport import QPrintDialog, QPrinter
class ImgWidget1(QtWidgets.QLabel):
def __init__(self,parameters, parent=None):
super(ImgWidget1, self).__init__(parent)
#print(self.parent.a.text())
self.pic = QtGui.QPixmap(imagePath1)
self.setPixmap(self.pic)
self.parameters = parameters
def paintEvent(self, event):
painter = QPainter(self)
painter.setPen(QColor('red'))
#painter.begin(self)
painter.drawPixmap(self.rect(), self.pic)
A, B, C, D = self.parameters
painter.drawText(150,13, str(A))
painter.drawText(16,35, str(B))
painter.drawText(150,55, str(C))
painter.drawText(272,35, str(D))
class Main(QtWidgets.QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.ui = Ui_RD()
self.ui.setupUi(self)
self.ui.printButton.clicked.connect(self.handlePrint)
self.ui.addButton.clicked.connect(self.adauga)
self.nr_row = 0
def adauga(self):
A = self.ui.a.text()
B = self.ui.b.text()
C = self.ui.c.text()
D = self.ui.d.text()
self.ui.tableWidget.insertRow(self.ui.tableWidget.rowCount())
if int(A) != 0 and int(B) != 0 and int(C) != 0 and int(D) != 0:
widget1 = ImgWidget1((A,B,C,D))
self.ui.tableWidget.setCellWidget(self.nr_row, 3, widget1)
def handlePrint(self):
printer = QPrinter(QPrinter.HighResolution)
dialog = QPrintDialog(printer, self)
if dialog.exec_() == QPrintDialog.Accepted:
self.handlePaintRequest(printer)
def handlePaintRequest(self, printer):
painter = QPainter()
painter.begin(printer)
self.ui.tableWidget.render(painter)
if __name__ == '__main__':
app = QtWidgets.QApplication([])
window = Main()
window.show()
app.exec_()