diff --git a/TP1/BubbleCursor.py b/TP1/BubbleCursor.py index 828aa6e232e44cec7ab2f6bc21f5ec64a0704c50..8e4e2618ff829170672459927ffa156142f5d3ea 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 476d98d579f44ca150e13452d12bc49b48fb23e0..8a47450322250f386464f32e11ae63f3ad43302c 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 f70217a92990d711ecbcadacc2e2207182495ba8..22990badbd4ea889c7361a5b01d99a77600745f1 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 78cf43c80661e139e58c44cfb74e40315881b169..52f415bd6b860ece4c862777783316d83bff1a3b 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))