python - pyqt打印预览QTableView

标签 python printing pyqt qtableview qpainter

我正在尝试将 QTableView 的内容打印到打印机。我实现了底部脚本,它成功运行,没有任何错误。但所有数据在 printPreview 中都是异常的。这是pic从我的问题 - FOUNTAIN

def printTable(self,printer,painter,area):
    model = self.model
    myTableView = self.view
    printer = painter 
    rows = model.rowCount();
    columns = model.columnCount();
    totalWidth = 0.0;
    totalPageHeight = 0.0;
    totalHeight = 0.0;
    for c in range(columns):
        totalWidth += myTableView.columnWidth(c)

    for p in range(45):
        totalPageHeight += myTableView.rowHeight(p);

    for r in range(rows):
        totalHeight += myTableView.rowHeight(r);

    xscale = area.width() / totalWidth;
    yscale = area.height() / totalHeight;
    pscale = area.height() / totalPageHeight;
    painter.scale(xscale, pscale);
    painter.translate(area.x() + xscale, area.y() + yscale);

    x=0
    #QStyleOptionViewItem option;

    for r in range(rows):
        ++x
        for c in range(columns):
            idx = model.index(r,c);
            option = myTableView.viewOptions();
            option.rect = myTableView.visualRect(idx);
            if r % 2 == 0:
                brush= QtGui.QBrush(QtGui.QColor(220, 220, 220), QtCore.Qt.SolidPattern);
                painter.fillRect(option.rect, brush);
            myTableView.itemDelegate().paint(painter, option, idx);

        if (x == 45):
            ok = printer.newPage();
            x=0;
            painter.translate(0, -1350);

####################### Now print Table ######################

printer = QtGui.QPrinter()
painter = QtGui.QPainter()
painter.begin(printer )
self.printTable(printer,painter, printer.pageRect())

如果您有任何可以帮助我的示例,请告诉我。非常感谢你

最佳答案

如果您使用的是 C++,我建议您使用专业的报告工具。可用选项为 KDAB reporting toolNocisoft NC Report .据我所知,PyQt 没有可靠的报告库...

关于python - pyqt打印预览QTableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10712176/

相关文章:

java - 如何在 Docker 容器中安装/添加 jdk 7

python - Django 测试——无法删除并重新创建测试数据库

python - "from package import *"和 "import package"之间的性能

python - PyQt5 使动态小部件可点击并将参数传递给另一个函数

python - 当我在主窗口中调用其他 QtWidget 时,我的 GUI 不起作用(按钮等)

python - 使用用户定义的函数提取、修改和粘贴字符串

javascript - 从 chrome 打印对话框中禁用打印选项

c# - 在 C# 中格式化打印文档

python - 在 Python IDLE 中, 'print' 变量和只写变量有什么区别?

python - 中央小部件的 pyqt 设计器和布局