Я пытаюсь напечатать виджет в PyQt, но получаю сообщение об ошибке «QPaintDevice: Невозможно уничтожить окрашенное устройство, которое окрашивается». Я думаю, проблема в том, что мой метод заканчивается, и поэтому qPaintDevice уничтожается, прежде чем художник закончит рисовать pixmap. Однако я не знаю, как замедлить работу художника.Ошибка печати изображения в PyQt
Код для моего метода здесь:
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' * не * очевидно, так как это не Pythonic. Спасибо, что узнал об этом, у меня была та же проблема. – EvertW
Обычно сборщик мусора python должен позаботиться об этом. Должно быть какое-то состояние гонки .. – pixelbrei
вместо использования 'del painter' вы должны вместо этого использовать' painter.end() ' – swinman