diff --git a/TP1/BubbleWidget.py b/TP1/BubbleWidget.py index 1f1c20d3de186a777eb8e829e9cfc920d8d582b8..4b20faf1e9fc85d9d520ffa6356638778899de72 100644 --- a/TP1/BubbleWidget.py +++ b/TP1/BubbleWidget.py @@ -24,9 +24,9 @@ class BubbleWidget(QWidget): def paintEvent(self, event): painter = QPainter(self) + self.cursor.paint(painter) for target in self.targets: target.paint(painter) - self.cursor.paint(painter) def mouseMoveEvent(self, event): self.cursor.move(event.x(), event.y()) @@ -46,4 +46,4 @@ class BubbleWidget(QWidget): def mousePressEvent(self, event): if self.cursor.closest.click_cible(): self.printTime() - self.selectRandomTarget() + self.selectRandomTarget() \ No newline at end of file diff --git a/TP1/MainRope.py b/TP1/MainRope.py new file mode 100644 index 0000000000000000000000000000000000000000..e9519fb7cc860234008ae68547634186653d38ac --- /dev/null +++ b/TP1/MainRope.py @@ -0,0 +1,14 @@ +from PyQt5.QtWidgets import QApplication, QMainWindow +from RopeWidget import RopeWidget +def main(): + app = QApplication([]) + window = QMainWindow() + window.resize(1024, 800) + bubble_widget = RopeWidget() + window.setCentralWidget(bubble_widget) + window.show() + app.exec_() + + +if __name__ == "__main__": + main() diff --git a/TP1/RopeCursor.py b/TP1/RopeCursor.py new file mode 100644 index 0000000000000000000000000000000000000000..5ed739ccb85e6dfd8f5c087b0c542848c4450a95 --- /dev/null +++ b/TP1/RopeCursor.py @@ -0,0 +1,7 @@ +from BubbleCursor import BubbleCursor + +class RopeCursor(BubbleCursor): + def paint(self, painter): + if self.closest is not None: + painter.setBrush(self.defaultCol) + painter.drawLine(self.x, self.y, self.closest.x, self.closest.y) diff --git a/TP1/RopeWidget.py b/TP1/RopeWidget.py new file mode 100644 index 0000000000000000000000000000000000000000..2aafc7af070aff0f4e62cc661d7bb73ae0885835 --- /dev/null +++ b/TP1/RopeWidget.py @@ -0,0 +1,49 @@ +import csv, random, time +from PyQt5.QtGui import QPainter +from PyQt5.QtWidgets import QWidget +from Target import Target +from RopeCursor import RopeCursor + +class RopeWidget(QWidget): + def __init__(self): + super().__init__() + self.targets = [] + self.loadTargets() + self.cursor = RopeCursor(self.targets) + self.setMouseTracking(True) + self.start_time = None + self.selectRandomTarget() + + def loadTargets(self): + with open('src_tp_bubble.csv', newline='') as csvfile: + reader = csv.reader(csvfile) + for row in reader: + if len(row) >= 3: + x, y, size = map(int, row[:3]) + self.targets.append(Target(x,y,size)) + + def paintEvent(self, event): + painter = QPainter(self) + self.cursor.paint(painter) + for target in self.targets: + target.paint(painter) + + def mouseMoveEvent(self, event): + self.cursor.move(event.x(), event.y()) + self.update() + + def selectRandomTarget(self): + if self.start_time == None: + self.start_time = time.time() + target = random.choice(self.targets) + target.toSelect = True + self.update() + + def printTime(self): + print((time.time() - self.start_time)*1000) + self.start_time = None + + def mousePressEvent(self, event): + if self.cursor.closest.click_cible(): + self.printTime() + self.selectRandomTarget()