我写了一个用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