/
AS1.py
72 lines (57 loc) · 2.33 KB
/
AS1.py
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
66
67
68
69
70
71
72
from PySide2.QtCore import QEvent
from PySide2.QtWidgets import (QMainWindow, QApplication, QGraphicsScene, QGraphicsView, QPushButton,
QWidget, QSizeGrip, QPlainTextEdit)
from PySide2.QtCore import Qt, QPoint
from PySide2 import QtCore
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Assignment")
self.scene = QGraphicsScene()
self.resize(800, 600)
self.button = QPushButton("Draw Text Boxes")
self.scene.addWidget(self.button)
self.view = QGraphicsView()
self.view.setScene(self.scene)
self.setCentralWidget(self.view)
self.button.clicked.connect(self.buttonClicked)
self.view.viewport().installEventFilter(self)
self.drawing = False
self.lastPoint = QPoint()
self.startPoint = QPoint()
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.startPoint = self.view.mapToScene(event.pos())
self.drawing = True
def mouseReleaseEvent(self, event):
if Qt.LeftButton and self.drawing:
self.lastPoint = self.view.mapToScene(event.pos())
self.update()
def paintEvent(self, event):
if self.drawing :
self.view.le = QPlainTextEdit()
width = QtCore.QRectF(self.startPoint, self.lastPoint).size().width()
height = QtCore.QRectF(self.startPoint, self.lastPoint).size().height()
x = self.startPoint.x()
y = self.startPoint.y()
if width > 1 and height > 1:
self.view.le.setGeometry(x, y, width, height)
self.qsizegrip = QSizeGrip(self.view.le)
self.scene.addWidget(self.view.le)
def buttonClicked(self):
self.button.hide()
def eventFilter(self, obj, event):
if obj is self.view.viewport():
if event.type() == QEvent.MouseButtonPress:
pass
# self.mousePressEvent(event)
elif event.type() == QEvent.MouseButtonRelease:
self.mouseReleaseEvent(event)
return QWidget.eventFilter(self, obj, event)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
# window.resize(800, 600)
window.show()
sys.exit(app.exec_())