From 7a02cb48d3b685d3b4bdadd89b7213a90a88fa9c Mon Sep 17 00:00:00 2001 From: Lucas Philippe <lucasphilippe@MacBook-Air-de-Lucas.local> Date: Thu, 18 Jan 2024 10:51:42 +0100 Subject: [PATCH] Correction de la Q5 (fonctionnel) --- TP1/BubbleCursor.py | 34 +++++++++++++++------------------- TP1/BubbleWidget.py | 2 -- TP1/MainBubble.py | 3 --- TP1/Target.py | 16 ++++++++++------ 4 files changed, 25 insertions(+), 30 deletions(-) diff --git a/TP1/BubbleCursor.py b/TP1/BubbleCursor.py index 828aa6e..8e4e261 100644 --- a/TP1/BubbleCursor.py +++ b/TP1/BubbleCursor.py @@ -1,7 +1,7 @@ from PyQt5.QtGui import QColor class BubbleCursor: - defaultCol=QColor("green") + defaultCol=QColor("blue") def __init__(self, targets): self.x = 0 @@ -9,30 +9,26 @@ class BubbleCursor: self.size = 50 self.targets = targets self.closest = None - def paint(self, painter): painter.setBrush(self.defaultCol) - painter.drawEllipse(self.x - self.size, self.y - self.size, self.size * 2, self.size * 2) - - def move(self, moveX, moveY): - self.x = moveX - self.y = moveY - self.closest = None - minDistance = float('inf') + painter.drawEllipse(int(self.x - self.size), int(self.y - self.size), int(self.size * 2), int(self.size * 2)) - for target in self.targets: - target.highlighted = False + def move(self, x, y): + self.x = x + self.y = y + min_distance = float("inf") # variable valeur infini pour démarrer la recherche de min + previous_closest = self.closest for target in self.targets: - distance = self.distanceToTarget(target) - if distance < minDistance: - minDistance = distance + distance = ((self.x - target.x) ** 2 + (self.y - target.y) ** 2) ** 0.5 # cf. Theoreme de Pythagore + distance = distance - target.size/2 # Prendre la distance avec le contour du cercle et pas le centre + if distance < min_distance: + min_distance = distance self.closest = target + self.size = min_distance - if self.closest is not None: + if previous_closest != self.closest: + if previous_closest: + previous_closest.highlighted = False self.closest.highlighted = True - self.size = minDistance - self.closest.size / 2 - def distanceToTarget(self, target): - distanceCentre = ((self.x - target.x) ** 2 + (self.y - target.y) ** 2) ** 0.5 - return abs(distanceCentre - target.size / 2) diff --git a/TP1/BubbleWidget.py b/TP1/BubbleWidget.py index 476d98d..8a47450 100644 --- a/TP1/BubbleWidget.py +++ b/TP1/BubbleWidget.py @@ -21,13 +21,11 @@ class BubbleWidget(QWidget): self.targets.append(Target(x,y,size)) def paintEvent(self, event): - print("paintEvent appelé") painter = QPainter(self) for target in self.targets: target.paint(painter) self.cursor.paint(painter) def mouseMoveEvent(self, event): - print("mouseMoveEvent appelé") self.cursor.move(event.x(), event.y()) self.update() diff --git a/TP1/MainBubble.py b/TP1/MainBubble.py index f70217a..22990ba 100644 --- a/TP1/MainBubble.py +++ b/TP1/MainBubble.py @@ -7,11 +7,8 @@ def main(): app = QApplication(sys.argv) main_window = QMainWindow() main_window.resize(1024, 800) - bubble_widget = BubbleWidget() - main_window.setCentralWidget(bubble_widget) - main_window.show() sys.exit(app.exec_()) diff --git a/TP1/Target.py b/TP1/Target.py index 78cf43c..52f415b 100644 --- a/TP1/Target.py +++ b/TP1/Target.py @@ -1,4 +1,5 @@ -from PyQt5.QtGui import QColor +from PyQt5.QtGui import QColor, QBrush, QPen + class Target: defaultCol = QColor("green") @@ -13,10 +14,13 @@ class Target: self.highlighted = False def paint(self, painter): + color = self.defaultCol + if self.toSelect: - painter.setBrush(self.toSelectCol) + color = self.toSelectCol elif self.highlighted: - painter.setBrush(self.highlightCol) - else: - painter.setBrush(self.defaultCol) - painter.drawEllipse(self.x - self.size / 2, self.y - self.size / 2, self.size, self.size) \ No newline at end of file + color = self.highlightCol + + painter.setBrush(QBrush(color)) + painter.setPen(QPen(color)) + painter.drawEllipse(int(self.x - self.size / 2), int(self.y - self.size / 2), int(self.size), int(self.size)) -- GitLab