Как значения слайдера 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())
