示例#1
0
def SaveTableImage(table):
    pixmap = table.grab()
    pixmap.save("widget.png")
    SaveTableImage(table)

    nrows = table.rowCount()
    ncols = table.columnCount()
    doc = QTextDocument()
    cursor = QTextCursor(doc)
    tableFormat = QTextTableFormat()

    tableFormat.setHeaderRowCount(1)
    tableFormat.setAlignment(Qt.AlignHCenter)
    tableFormat.setCellPadding(0)
    tableFormat.setCellSpacing(0)
    tableFormat.setBorder(1)
    tableFormat.setBorderBrush(QBrush(Qt.SolidPattern))
    tableFormat.clearColumnWidthConstraints()

    textTable = cursor.insertTable(nrows + 1, ncols, tableFormat)
    tableHeaderFormat = QTextCharFormat()
    tableHeaderFormat.setBackground(QColor("#DADADA"))
    for i in range(ncols):
        cell = textTable.cellAt(0, i)
        cell.setFormat(tableHeaderFormat)
        cellCursor = cell.firstCursorPosition()
        cellCursor.insertText(table.horizontalHeaderItem(i).text())

    for i in range(nrows):
        for j in range(ncols):
            item = table.item(i, j)
            t = "" if item is None else str(item.text())
            # if item.text().iEmpty():
            #     table.setItem(i,j,QTableWidgetItem("0"))

            cell = textTable.cellAt(i + 1, j)
            cellCursor = cell.firstCursorPosition()
            cellCursor.insertText(t)

    cursor.movePosition(QTextCursor.End)
    printer = QPrinter(QPrinter.PrinterResolution)
    printer.setPaperSize(QPrinter.A4)
    printer.setOrientation(QPrinter.Landscape)
    printer.setOutputFileName("w8.pdf")
    doc.setDocumentMargin(0)
    doc.setTextWidth(5)
    doc.print(printer)