Как значения слайдера QSlider в PyQt использовать для установки громкости в Pygame.mixer?

Я просмотрел много вариантов решения этого вопроса,
но ни один так и не смог применить в своем коде,
поэтому решил создать вопрос сам, на примере своего кода.

Нужно получить значение слайдера в переменную, чтобы в дальнейшем использовать ее для установки громкости Pygame.mixer.


Описание слайдера:

    ...
        self.volume = QtWidgets.QSlider(self.centralwidget)
        self.volume.setGeometry(QtCore.QRect(275, 5, 160, 20))
        self.volume.setMaximum(100)
        self.volume.setPageStep(1)
        self.volume.setProperty("value", 50)
        self.volume.setSliderPosition(50)
        self.volume.setOrientation(QtCore.Qt.Horizontal)
        self.volume.setObjectName("volume")
    ...

Функция воспроизводящая звук:

def clicked_11():
    pygame.mixer.init()
    pygame.mixer.Channel(0).play((btn_11_sound))
    btn_11_sound.set_volume(value_of_slider)

Нужно чтобы значение слайдера находилось в переменной value_of_slider.

Как это можно сделать?


Ответы (1 шт):

Автор решения: S. Nick

Пожалуйста, всегда предоставляйте минимально-воспроизводимый пример.

QSlider наследует полный набор сигналов:

valueChanged() - генерируется, когда значение ползунка изменилось.
...

Установите свою музыку и попробуйте:


import sys
import pygame
from PyQt5 import QtCore, QtGui, QtWidgets     


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.centralWidget = QtWidgets.QWidget()
        self.setCentralWidget(self.centralWidget) 
        
        self.label = QtWidgets.QLabel()
        self.label.setStyleSheet("font: 12pt \"Ubuntu\"")
        
        self.slider = QtWidgets.QSlider(self.centralWidget)
        self.slider.setMaximum(100)
        self.slider.setPageStep(1)
        self.slider.setProperty("value", 50)
        self.slider.setOrientation(QtCore.Qt.Horizontal)

        self.slider.valueChanged.connect(self._set_volume)               # +++
        
        layout = QtWidgets.QHBoxLayout(self.centralWidget)
        layout.addWidget(self.slider, 1,
            alignment=QtCore.Qt.AlignRight | QtCore.Qt.AlignBottom)
        layout.addWidget(self.label, 0,
            alignment=QtCore.Qt.AlignRight | QtCore.Qt.AlignBottom)
            
        pygame.mixer.init()
        pygame.mixer.music.load( # vvvvvvvvvvvvvvvvvvvvv  установите свою музыку !
            "D:/_Qt/Python-Examples/_PyQt5/_Raznoe/QCoreApplication/zvuki_prirody.mp3")        
        pygame.mixer.music.play()
        self._set_volume(self.slider.value()) 
            
    def _set_volume(self, value):                                        # +++
        self.label.setNum(value)
        pygame.mixer.music.set_volume(round(value*0.01, 2))              # +++


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec())

введите сюда описание изображения

→ Ссылка