@Andreyyyyyyyyy

Как рисовать в PyQt5?

Доброго времени суток.
Столкнулся с проблемой вызова 'painter', мне нужно, чтобы функция рисовала по указанным координатам линию.
def drawX(a, b):
    painter = QtGui.QPainter()
    painter.begin()
    painter.setPen(QtGui.QPen(QtGui.QColor(121,252,50,50), 20, QtCore.Qt.SolidLine))
    painter.drawLine(10+a*50, 20+b*50, 51, 51)
    MainWindow.update()

При вызове данной функции получаю TypeError: begin(self, QPaintDevice): not enough arguments
наугад пробывал подставить вместо 3 строчки: painter.begin(MainWindow)
( до этой функции в коде прописано MainWindow = QtWidgets.QMainWindow() )
После этого получал уже новую ошибку:
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::setPen: Painter not active

Если кто-нибудь знает как правильно написать вызываемую функцию, которая будет по указанным координатам рисовать прямую, помогите пожалуйста. Перерыл очень много, много перепробовал, ничего не помогает.
  • Вопрос задан
  • 821 просмотр
Пригласить эксперта
Ответы на вопрос 1
@oji
Вызывать можно по-разному, в документации описаны следующие определения:
void drawLine(const QLineF &line)
void drawLine(const QLine &line)
void drawLine(int x1, int y1, int x2, int y2)
void drawLine(const QPoint &p1, const QPoint &p2)
void drawLine(const QPointF &p1, const QPointF &p2)

Вам необходимо сперва инициализировать холст и только потом рисовать на нём, в соответствующем событии. Возможно, поможет разобраться пример моего приложения, рисующего таблицы Шульте: https://github.com/oleg-glushko/USSRSpeedReading/b...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы