如何更改QTableWidget打印的大小?

2024-04-18 22:01:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编写了一个程序,它获取输入并根据输入在qtablewidget单元格中插入图像。我有一个打印按钮,它打开一个打印对话框(可以正常工作),并使用QPaint打印表格

我的问题是表格是以较小的比例打印的(你不能从中了解太多)。如何调整打印的大小

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_()

Tags: textfromimportselfuiinitdefprinter