From ef888311de793b2d9b105918714cb931bd134659 Mon Sep 17 00:00:00 2001 From: Lucas Philippe <lucasphilippe@MacBook-Air-de-Lucas.local> Date: Thu, 18 Jan 2024 11:53:00 +0100 Subject: [PATCH] Etape 8 fonctionnelle --- TP1/BubbleWidget.py | 4 ++-- TP1/MainRope.py | 14 +++++++++++++ TP1/RopeCursor.py | 7 +++++++ TP1/RopeWidget.py | 49 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 TP1/MainRope.py create mode 100644 TP1/RopeCursor.py create mode 100644 TP1/RopeWidget.py diff --git a/TP1/BubbleWidget.py b/TP1/BubbleWidget.py index 1f1c20d..4b20faf 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 0000000..e9519fb --- /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 0000000..5ed739c --- /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 0000000..2aafc7a --- /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() -- GitLab