Из-за чего может быть ошибка сегментации при попытке залить виджет градиентом в PyQt5?

Понадобилось сделать заливку виджета градиентом в 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_())

Что я сделал не так? Встречался ли кто-либо с этим? Я был бы также чрезмерно благодарен если вы можете протестировать этот код на своей машине и отписаться в комментариях, крашится ли у вас программа с ошибкой сегментации или нет.
  • Вопрос задан
  • 435 просмотров
Решения вопроса 1
gim0
@gim0 Автор вопроса
Проблема, как оказалось, была в этой строке:
grad = QtGui.QGradient()
Я, видимо, использовал неправильный класс. Замена на QLinearGradient помогла.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы