Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 25.04.2017
Сообщений: 7
1

Рисование в QGraphicsView

05.12.2019, 18:04. Просмотров 702. Ответов 1

Приветствую всех, есть форма PyQt созданная в Qt Designer, на ней есть GraphicsView, пытаюсь реализовать рисование мышью, точки он фиксирует, но рисунка нет, помогите найти проблему

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(504, 364)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(360, 40, 121, 61))
        self.pushButton.setObjectName("pushButton")
        self.graphicsView = QtWidgets.QGraphicsView(self.centralwidget)
        self.graphicsView.setGeometry(QtCore.QRect(10, 10, 331, 281))
        self.graphicsView.setObjectName("graphicsView")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(360, 120, 121, 61))
        self.pushButton_2.setObjectName("pushButton_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 504, 18))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
 
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "Распознать"))
        self.pushButton_2.setText(_translate("MainWindow", "Очистить"))
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import sys
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtGui import QBrush, QPen
import form
 
 
class My_App(QtWidgets.QMainWindow, form.Ui_MainWindow):
    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.scribbling = False
        self.brushSize = 2
        self.brushColor = Qt.black
        self.image = QImage(self.size(), QImage.Format_RGB32)
        self.image.fill(Qt.white)
        self.lastPoint = QPoint()
        self.graphicsView.paintEvent = self.paint
        self.graphicsView.mousePressEvent = self.mpress
        self.graphicsView.mouseMoveEvent = self.mmove
        self.graphicsView.mouseReleaseEvent = self.rmouse
 
    def paint(self, event):
        painter = QPainter(self)
        painter.drawImage(self.rect(), self.image)
 
    def mpress(self, event):
        if (event.button() == Qt.LeftButton) :
            self.lastPoint = event.pos()
            self.scribbling = True
 
 
    def mmove(self, event):
        if (event.buttons() & Qt.LeftButton) and self.scribbling:
            # self.drawLineTo(event.pos())                          # -
 
            # +++
            painter = QPainter(self.image)
            painter.setPen(QPen(self.brushColor, self.brushSize,
                                Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin))
            painter.drawLine(self.lastPoint, event.pos())
            # self.modified = True                                  # ?
            self.lastPoint = event.pos()
            print(self.lastPoint)
            self.update()
 
    def rmouse(self, event):
        if event.button() == Qt.LeftButton and self.scribbling:
            # self.drawLineTo(event.pos())
            self.scribbling = False
            pass
 
    def drawingOn(self):
        self.scribbling = True
 
    # +++    
    def drawingOff(self):
        self.scribbling = False
 
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = My_App()
    window.show()
    sys.exit(app.exec_())
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2019, 18:04
Ответы с готовыми решениями:

Уменьшение/увеличение картинки на QGraphicsView
Доброго дня! Подскажите, пожалуйста, как правильно сделать уменьшение/увеличение картинки на...

QGraphicsView и QGraphicsScene некорректное отображение элементов
Пытаюсь изучить чутка PySide. Решил что сперва будет двигаться элипс по координатам. Что-то не...

QGraphicsView
Как добиться того что бы QGraphicsView автоматически изменял свой размер в соответствии с размером...

QGraphicsView
Здравствуйте, я только еще учу Qt и с++, подскажите в где мои ошибки пытаюсь создать класс mvscene...

1
0 / 0 / 0
Регистрация: 25.04.2017
Сообщений: 7
06.12.2019, 23:06  [ТС] 2
Все пробовал, но рисование так и не добился, есть специалисты ?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2019, 23:06

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

QGraphicsView.background
Хочу: Фон картиночкой,которая сама масштабируется до размеров QGraphicsView, а получается...

QGraphicsView sizeIncrement
У меня не получается изменять размер QGraphicsView инкрементно на 20. main.cpp #include...

QGraphicsView + QGraphicsScene
#include <QApplication> #include <QGraphicsEllipseItem> #include <QGraphicsScene> #include...

QGraphicsView фокусировка
Собственно вопрос такой можно но ли как то сфокусировать QGraphicsView на координаты? Например 200,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.