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 73 74 75 76 77
| from PyQt5.QtCore import (QLineF, QPointF, QRectF, Qt)
from PyQt5.QtGui import (QBrush, QColor, QPainter,QPen,QFont)
from PyQt5.QtWidgets import (QApplication, QGraphicsView, QGraphicsScene, QGraphicsItem,
QGridLayout, QVBoxLayout, QHBoxLayout,
QLabel, QLineEdit, QPushButton,QWidget, QMainWindow)
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
fenetre_widget = QWidget()
self.view = QGraphicsView()
self.view.setCacheMode(QGraphicsView.CacheBackground)
self.pen = QPen()
self.pen.setWidth(1)
self.pen2 = QPen()
self.pen2.setWidth(5)
self.label1=QLabel("Test")
self.label1.setFixedWidth(400)
layouthorizontal1 = QHBoxLayout()
layouthorizontal1.addWidget(self.view)
layouthorizontal1.addWidget(self.label1)
fenetre_widget.setLayout(layouthorizontal1)
self.setCentralWidget(fenetre_widget)
self.view.mousePressEvent = self.on_mousePressEvent
self.nb_droite=0
self.scene = None
def resizeEvent(self,resizeEvent):
self.build_scene()
self.scene.clear()
self.nb_droite=0
def build_scene(self):
self.scene = QGraphicsScene(self)
self.scene.setSceneRect(0, 0, self.view.width(), self.view.height())
self.view.setScene(self.scene)
def keyPressEvent(self, event):
key = event.key()
if key == Qt.Key_R:
self.scene.clear()
super(MainWindow, self).keyPressEvent(event)
def on_mousePressEvent(self, event):
if self.scene is None:
self.build_scene()
pos = event.pos()
print(pos)
taillex=self.view.width()
tailley=self.view.height()
if self.nb_droite<2:
if self.nb_droite==0:
self.pos1x=pos.x()
self.pos1y=pos.y()
print(self.pos1x,self.pos1y)
elif self.nb_droite==1:
self.pos2x=pos.x()
self.pos2y=pos.y()
print(self.pos2x,self.pos2y)
self.scene.addLine(pos.x(),0,pos.x(),tailley,self.pen)
self.nb_droite = self.nb_droite+1
if self.nb_droite==2:
label=self.scene.addSimpleText (str(abs(self.pos1x-self.pos2x)) + " pixels", QFont('Norasi', 12))
ligne_legende=self.scene.addLine (20,tailley-15,(abs(self.pos1x-self.pos2x)/2),tailley-15,self.pen2)
label.setY(tailley-40)
label.setX(20)
print(self.pos1x-self.pos2x)
elif self.nb_droite==2:
self.scene.clear()
self.nb_droite=0
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_()) |
Partager