From 44b29b0566b7db52fcbcbf18deff7556ac1414bb Mon Sep 17 00:00:00 2001 From: billypom on debian Date: Tue, 1 Oct 2024 21:21:27 -0400 Subject: [PATCH] playback speed slider --- main.py | 7 +++++++ ui.py | 23 +++++++++++++++++------ ui.ui | 39 ++++++++++++++++++++++++++++++++++----- 3 files changed, 58 insertions(+), 11 deletions(-) diff --git a/main.py b/main.py index 6c3719e..2e9788f 100644 --- a/main.py +++ b/main.py @@ -185,6 +185,9 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow): lambda: self.player.setPosition(self.playbackSlider.value()) ) # sliderReleased works better than sliderMoved self.volumeSlider.sliderMoved[int].connect(lambda: self.volume_changed()) + self.speedSlider.sliderReleased.connect( + lambda: self.speed_changed(self.speedSlider.value()) + ) self.playButton.clicked.connect(self.on_play_clicked) # Click to play/pause self.previousButton.clicked.connect(self.on_previous_clicked) self.nextButton.clicked.connect(self.on_next_clicked) # Click to next song @@ -425,6 +428,10 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow): except Exception as e: logging.error(f"main.py volume_changed() | Changing volume error: {e}") + def speed_changed(self, rate: int) -> None: + """Handles playback speed changes""" + self.player.setPlaybackRate(rate / 50) + def on_play_clicked(self) -> None: """Updates the Play & Pause buttons when clicked""" if self.player.state() == QMediaPlayer.State.PlayingState: diff --git a/ui.py b/ui.py index b9e3067..5b47b14 100644 --- a/ui.py +++ b/ui.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'ui.ui' # -# Created by: PyQt5 UI code generator 5.15.9 +# Created by: PyQt5 UI code generator 5.15.10 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. @@ -122,7 +122,7 @@ class Ui_MainWindow(object): self.hLayoutMusicTable.setStretch(1, 10) self.verticalLayout.addLayout(self.hLayoutMusicTable) self.verticalLayout.setStretch(0, 1) - self.verticalLayout.setStretch(1, 10) + self.verticalLayout.setStretch(1, 2) self.verticalLayout_3.addLayout(self.verticalLayout) self.hLayoutControls = QtWidgets.QHBoxLayout() self.hLayoutControls.setSpacing(6) @@ -156,12 +156,23 @@ class Ui_MainWindow(object): self.volumeSlider.setObjectName("volumeSlider") self.hLayoutControls2.addWidget(self.volumeSlider) self.verticalLayout_3.addLayout(self.hLayoutControls2) - self.verticalLayout_3.setStretch(0, 10) - self.verticalLayout_3.setStretch(1, 1) - self.verticalLayout_3.setStretch(2, 1) + self.hLayoutControls3 = QtWidgets.QHBoxLayout() + self.hLayoutControls3.setObjectName("hLayoutControls3") + self.speedSlider = QtWidgets.QSlider(self.centralwidget) + self.speedSlider.setMinimum(0) + self.speedSlider.setMaximum(100) + self.speedSlider.setSingleStep(1) + self.speedSlider.setProperty("value", 50) + self.speedSlider.setOrientation(QtCore.Qt.Horizontal) + self.speedSlider.setInvertedAppearance(False) + self.speedSlider.setTickPosition(QtWidgets.QSlider.NoTicks) + self.speedSlider.setObjectName("speedSlider") + self.hLayoutControls3.addWidget(self.speedSlider) + self.verticalLayout_3.addLayout(self.hLayoutControls3) + self.verticalLayout_3.setStretch(0, 20) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 1152, 21)) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1152, 41)) self.menubar.setObjectName("menubar") self.menuFile = QtWidgets.QMenu(self.menubar) self.menuFile.setObjectName("menuFile") diff --git a/ui.ui b/ui.ui index 59a8a78..9e62a72 100644 --- a/ui.ui +++ b/ui.ui @@ -17,9 +17,9 @@ - + - + 6 @@ -279,6 +279,35 @@ + + + + + + 0 + + + 100 + + + 1 + + + 50 + + + Qt::Horizontal + + + false + + + QSlider::NoTicks + + + + + @@ -287,7 +316,7 @@ 0 0 1152 - 21 + 41 @@ -315,8 +344,8 @@ - - + +