This simply fills the window with a colour that is changed by clicking and dragging. It logs the mouse position and delta (x,y distance to point where mouse was pressed) to the console. ```python # widget that dumps mousemove events import sys from PySide6.QtCore import * from PySide6.QtGui import * from PySide6.QtWidgets import * from PySide6.QtNetwork import * def clamp(x,m,M): if x < m: return m if x > M: return M return x class MyWidget(QWidget): def __init__(self,*xs,**kw): self.h = 0 self.s = 255 self.v = 0 self.h0 = 0 self.v0 = 0 self.brush = QBrush() self.brush.setColor(QColor.fromHsv(self.h,self.s,self.v)) super().__init__(*xs,**kw) def mousePressEvent(self,event): self.previous_pos = event.position().toPoint() x0 = self.previous_pos.x() y0 = self.previous_pos.y() print(f"Press at ({x0},{y0})") return super().mousePressEvent(event) def mouseMoveEvent(self,event): current_pos = event.position().toPoint() x0 = self.previous_pos.x() y0 = self.previous_pos.y() x = current_pos.x() y = current_pos.y() dx = x - x0 dy = y - y0 self.h = (self.h0 + dx) % 360 self.v = clamp((self.v0 + dy),0,255) self.brush.setColor(QColor.fromHsv(self.h,self.s,self.v)) print(f"Move ({x0},{y0}) => ({x},{y}) delta ({dx},{dy})") self.update() return super().mouseMoveEvent(event) def mouseReleaseEvent(self, event) -> None: current_pos = event.position().toPoint() x0 = self.previous_pos.x() y0 = self.previous_pos.y() x = current_pos.x() y = current_pos.y() dx = x - x0 dy = y - y0 self.h0 = (self.h0 + dx) % 360 self.v0 = clamp((self.v0 + dy),0,255) self.h = self.h0 self.v = self.v0 self.brush.setColor(QColor.fromHsv(self.h,self.s,self.v)) self.previous_pos = event.position().toPoint() x0 = self.previous_pos.x() y0 = self.previous_pos.y() print(f"Release at ({x0},{y0})") return super().mouseReleaseEvent(event) def paintEvent(self, event) -> None: with QPainter(self) as painter: rect = self.rect() print(f"rect {rect}") painter.fillRect(rect,QColor.fromHsv(self.h,self.s,self.v)) return super().paintEvent(event) app = QApplication(sys.argv) win = QMainWindow() w = MyWidget() win.setCentralWidget(w) win.show() exit(app.exec()) ```