在PyQt5中打印Qt5图形视图是错误的,但在爱普生打印机上是可以的

我写了一个用python3创建图形的小程序。我在Qt5设计器中定义了一个带有图形视图的窗口。在python3 (使用PyCharm)中,我通过场景创建矩形

    scene = QtWidgets.QGraphicsScene()
    self.gvCanvas.setScene(scene)

这很好用。现在我想打印我的grapghicsview gvCanvas。我将button.clicked连接到print_widget。它的定义如下:

def print_widget(self):
    # Create printer
    printer = QtPrintSupport.QPrinter() #QtPrintSupport.QPrinter.HighResolution)
    printer.setPageSize(QtPrintSupport.QPrinter.A4)

    # Create painter
    painter = QtGui.QPainter()
    # Start painter
    painter.begin(printer)
    # Grab a widget you want to print
    screen = self.gvCanvas.grab()     #editor.grab()
    # Draw grabbed pixmap
    painter.drawPixmap(10, 10, screen)
    # End painting. 
    painter.end()

直接打印到我的爱普生打印机,一切正常。我还在我的Ubuntu 18.04上定义了一个PDF-Printer。(cups-pdf)。这适用于我的所有软件(例如LibreOffice)。但打印/绘图在Epson-printer上没有问题,在Pdf-Printer上不起作用。我得到的是一张完全空白的纸。在一些论坛中,我发现,使用scene.render或graphicsview.render可以做到这一点。但我不理解它或无法将其移植到python3 (似乎在C++中)

所以问题是:我的print_widget应该是什么样子的?

转载请注明出处:http://www.0730huitian.com/article/20230526/2617026.html