В печати PyQt5 графическое изображение Qt5 неверно в PDF, но нормально на принтере Epson - PullRequest
0 голосов
/ 23 февраля 2019

Я пишу небольшую программу для создания графики на python3.Я определил в Qt5 designer окно с графическим представлением.В python3 (используя PyCharm) я создаю прямоугольники через сцену

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

, которая работает хорошо.Теперь я хочу напечатать мой grapghicsview gvCanvas.Я подключаю кнопку. Нажал на 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()

При печати непосредственно на моем принтере Epson все в порядке. Я также определил PDF-принтер на своей Ubuntu 18.04.(Чашки-PDF).Это прекрасно работает для всех моих программ (например, LibreOffice).Но печать / печать, которая не работает на Epson-принтере, не работает на Pdf-принтере.Я получаю полностью чистый лист.Я обнаружил, что на каком-то форуме это делается с помощью scene.render oder graphicsview.render.Но я не понимаю или не могу перенести его на python3 (кажется, в C ++)

Итак, вопрос: как должен выглядеть мой print_widget правильно?

1 Ответ

0 голосов
/ 23 февраля 2019

потратив часы, я наконец нашел решение (без понимания художника / принтера)

Я заменил экран ....... и операторы pixmap на

    #screen = self.gvCanvas.grab()     #editor.grab()
    # Draw grabbed pixmap
    #painter.drawPixmap(10, 10, screen)
    self.gvCanvas.render(painter)

и это работает

...