Skip to content
Snippets Groups Projects
Commit 7a02cb48 authored by Lucas Philippe's avatar Lucas Philippe
Browse files

Correction de la Q5 (fonctionnel)

parent e1dd373c
No related branches found
No related tags found
No related merge requests found
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)
......@@ -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()
......@@ -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_())
......
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))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment