当前位置: 首页 > 面试题库 >

在PyQt中打印图像时出错

程智明
2023-03-14
问题内容

我正在尝试在PyQt中打印小部件,但收到“
QPaintDevice:无法销毁正在绘制的绘制设备”的错误。我认为问题是我的方法结束了,因此在绘画者完成绘制像素图之前,qPaintDevice被破坏了。但是,我不知道如何降低画家的速度。

我的方法的代码在这里:

def printer(self):
    "Prints the current diagram"
    # Create the printer
    printerobject = QtGui.QPrinter(0)
    # Set the settings
    printdialog = QtGui.QPrintDialog(printerobject)
    if printdialog.exec_() == QtGui.QDialog.Accepted:
        # Print
        pixmapImage = QtGui.QPixmap.grabWidget(self.contentswidget)
        painter = QtGui.QPainter(printerobject)
        painter.drawPixmap(0, 0, pixmapImage)

对于它的价值,我尝试使用.begin()和.end()方法,但无济于事。


问题答案:

我发现了我的问题-我忘记了删除画家,这在事后看来很明显(不是总是这样吗?)。最后添加“ del painter”可使代码正常工作。这是工作代码:

def printer(self):
    "Prints the current diagram"
    # Create the printer
    printerobject = QtGui.QPrinter(0)
    # Set the settings
    printdialog = QtGui.QPrintDialog(printerobject)
    if printdialog.exec_() == QtGui.QDialog.Accepted:
        # Print
        pixmapImage = QtGui.QPixmap.grabWidget(self.contentswidget)
        painter = QtGui.QPainter(printerobject)
        painter.drawPixmap(0, 0, pixmapImage)
        del painter


 类似资料:
  • 问题内容: 我正在尝试遵循有关打印QWidet的文档,但出现错误。当我运行以下代码时,我得到了。 如果我将print_me()方法更改为以下方法,它将起作用(当然,我只是失去了缩放画家的全部能力): 问题答案: 用于优化的QPainter不能同时应用所有任务,但会保留指令并在最后应用它们,但要强制执行该任务,最好调用end()方法或将其删除,因为销毁者还调用end() ,此外,QPainter不必

  • 编辑:所以在一天的混乱之后。我的问题是spintf。我最初认为我的循环是错误的。

  • 大家好,我刚刚读完Android Studio中新打印系统的官方文档(https://developer.android.com/training/printing/photos.html)但我没能成功。我基本上复制粘贴了以下代码: 但是Android打印用户交互界面没有出现。 我的工作范围是设置打印机(在那里我将打印我的所有照片),一旦设置完成,我会给打印机打印位图。我将非常感谢所有回答我的人,

  • 问题内容: 是否可以在Internet选项的“高级”选项卡中不启用“打印背景色和图像”的情况下打印背景图像? 我认为可以使用没有“背景图像”的替代方法…使用div标签和绝对位置可以模拟背景图像的相同效果吗?我也想在页面上重复背景图像。 问题答案: 打印背景图像(在标记中指定为背景图像的那些图像)的能力完全取决于最终用户,您无法从代码中以编程方式控制此功能。Firefox的一个插件提供了JavaSc

  • 问题内容: 我必须在热蓝牙打印机上打印一些数据,我正在这样做: 它适用于文本,但不适用于图像。我想我需要获取byte[]图像数据。我尝试通过这种方式获取图像数据: 不幸的是,打印机打印了许多奇怪的字符(大约50厘米的纸张)。我不知道如何打印图像。 我想尝试获取位图的像素,然后将其转换为a byte[]并发送,但是我不知道该怎么做。 谢谢 更新: 经过这么长时间,我正在执行此操作:我有一个名为pri

  • 我不确定此错误消息的含义:*错误:请求成员开始在counter.std::映射