Понадобилось сделать заливку виджета градиентом в PyQt5, однако программа каждый раз, при попытке это сделать, завершается с ошибкой сегментации (segmentation fault). При чём не обязательно заливать, достаточно даже передать объект
QGradient в
конструктор QBrush. Простой код программы для примера:
from sys import exit, argv
from PyQt5 import QtGui, QtWidgets
class MyWidget(QtWidgets.QWidget):
def paintEvent(self, event):
painter = QtGui.QPainter(self)
grad = QtGui.QGradient()
grad.setColorAt(0.0, QtGui.QColor(0, 0, 0))
grad.setColorAt(1.0, QtGui.QColor(0, 0, 100))
painter.fillRect(event.rect(), grad) # segfault
#brush = QtGui.QBrush(grad) # segfault
#painter.fillRect(event.rect(), QtGui.QColor(100, 0, 0)) # ok
if __name__ == '__main__':
app = QtWidgets.QApplication(argv)
window = MyWidget()
window.show()
exit(app.exec_())
Что я сделал не так? Встречался ли кто-либо с этим? Я был бы также чрезмерно благодарен если вы можете протестировать этот код на своей машине и отписаться в комментариях, крашится ли у вас программа с ошибкой сегментации или нет.