Я пытаюсь нарисовать прямоугольник в PyQt5. Но что-то всегда не работает со мной. Я имел в виду «документацию QPainterPath», и был такой пример:
path = QPainterPath()
path.addRect(20, 20, 60, 60)
path.moveTo(0, 0)
path.cubicTo(99, 0, 50, 50, 99, 99)
path.cubicTo(0, 99, 50, 50, 0, 0)
QPainter painter(self)
painter.fillRect(0, 0, 100, 100, Qt.white)
painter.setPen(QPen(QColor(79, 106, 25), 1, Qt.SolidLine,
Qt.FlatCap, Qt.MiterJoin))
painter.setBrush(QColor(122, 163, 39))
painter.drawPath(path)
Я попробовал себя, но я не могу понять, что такое "QPainter Painter (self)" и как там работает, я не смог найти команду QPainter.
Вот мой пример кода:
from PyQt5 import QtGui, QtCore, QtWidgets
import sys
class testUi(QtWidgets.QDialog):
def __init__(self, parent=None):
super(testUi, self).__init__(parent)
self.window = 'vl_test'
self.title = 'Test Remastered'
self.size = (1000, 650)
self.create( )
def create(self):
self.setWindowTitle(self.title)
self.resize(QtCore.QSize(*self.size))
self.testik = test(self)
self.mainLayout = QtWidgets.QVBoxLayout( )
self.mainLayout.addWidget(self.testik)
self.setLayout(self.mainLayout)
class test(QtWidgets.QGraphicsView):
def __init__(self, parent=None):
super(test, self).__init__(parent)
self._scene = QtWidgets.QGraphicsScene( )
self.setScene(self._scene)
self.drawSomething( )
def drawSomething(self):
self.path = QtGui.QPainterPath( )
self.path.moveTo(0, 0)
self.path.addRect(20, 20, 60, 60)
self._scene.addPath(self.path)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
v = testUi()
v.show()
sys.exit(app.exec_())
Я ничего не написал после "addRect" в моем коде. Так что кто-нибудь может объяснить, как использовать этот "QPainter". Спасибо за ваше время.
P.S
Дополнительный вопрос: Какой самый быстрый способ рисовать и взаимодействовать с примитивами в QGraphicScene? Потому что я вижу там много способов рисовать кривые / многоугольники и манипулировать ими, но что наиболее эффективно для рабочего процесса? Извините за мой английский