#!/usr/bin/python3 from PyQt6.QtCore import Qt from PyQt6.QtGui import QMouseEvent from PyQt6.QtWidgets import QSlider class TrackProgressSlider(QSlider): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.dragged = False self.sliderPressed.connect(self.on_press) self.sliderReleased.connect(self.on_release) def mousePressEvent(self, event: QMouseEvent): if event.button() == Qt.MouseButton.LeftButton: event.accept() x = event.pos().x() value = self.maximum() * x // self.width() self.setValue(value) return super().mousePressEvent(event) def on_press(self): self.dragged = True def on_release(self): self.dragged = False