提要:
本文章记录pyqt5怎么实现音乐播放与音乐音量的控制
播放音乐:
from PyQt5.QtCore import Qt, QUrl, pyqtSignal
from PyQt5.QtGui import QIcon
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer, QMediaPlaylist
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QSlider, QPushButton, QLabel
if __name__ == "__main__":
app = QApplication([])
# 以下模块是加载音乐
media_player = QMediaPlayer() # 播放器设置
media_playlist = QMediaPlaylist() # 播放列表设置
media_playlist.addMedia(QMediaContent(QUrl.fromLocalFile("music/sound2.mp3")))
# 往播放列表里加歌(.mp3文件)
media_player.setPlaylist(media_playlist)
# 给播放器设置播放列表
media_player.play()
# 播放器开始播放
app.exec_()
这是最基础的播放部分。
播放器控制窗口设置:
class MusicControlWindow(QWidget):
def __init__(self, player):
super().__init__()
self.player = player
# 创建控制音量滑块
self.volume_slider = QSlider(Qt.Horizontal)
self.volume_label = QLabel("Volume:")
# 设置音量滑块的范围和初始值
self.volume_slider.setMinimum(0)
self.volume_slider.setMaximum(100)
self.volume_slider.setValue(50)
# 创建垂直布局,并添加音量标签和音量滑块
layout = QVBoxLayout()
layout.addWidget(self.volume_label)
layout.addWidget(self.volume_slider)
# 设置窗口布局
self.setLayout(layout)
# 为按钮添加点击事件
self.volume_slider.valueChanged.connect(self.player.setVolume)
# 这个self.player.setVolume 便是通过滑块的改变来控制播放器音量
# 设置窗口属性
self.setWindowTitle("Music Control Window")
self.setGeometry(100, 100, 300, 200)
def closeEvent(self, event):
# 重写窗口关闭事件,在窗口关闭时不退出应用程序
event.ignore()
self.hide()
主窗口:
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 设置图标
self.setWindowTitle("音乐播放器")
self.setWindowIcon(QIcon("resources/red1.png"))
# 设置按钮
self.btn_open_volume = QPushButton("打开音量控制器")
# 按钮信号与槽绑定
self.btn_open_volume.clicked.connect(self.open_volume_control)
# 设置按钮位置
self.setCentralWidget(self.btn_open_volume)
# 加载音乐播放器
self.media_player = QMediaPlayer()
self.media_playlist = QMediaPlaylist()
self.media_playlist.addMedia(QMediaContent(QUrl.fromLocalFile("music/sound2.mp3")))
self.media_player.setPlaylist(self.media_playlist)
def open_volume_control(self):
self.volume_control = MusicControlWindow(self.media_player)
self.volume_control.show()
综合:
from PyQt5.QtCore import Qt, QUrl, pyqtSignal
from PyQt5.QtGui import QIcon
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer, QMediaPlaylist
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QSlider, QPushButton, QLabel
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 设置图标
self.setWindowTitle("音乐播放器")
self.setWindowIcon(QIcon("resources/red1.png"))
# 设置按钮
self.btn_open_volume = QPushButton("打开音量控制器")
# 按钮信号与槽绑定
self.btn_open_volume.clicked.connect(self.open_volume_control)
# 设置按钮位置
self.setCentralWidget(self.btn_open_volume)
# 加载音乐播放器
self.media_player = QMediaPlayer()
self.media_playlist = QMediaPlaylist()
self.media_playlist.addMedia(QMediaContent(QUrl.fromLocalFile("music/sound2.mp3")))
self.media_player.setPlaylist(self.media_playlist)
def open_volume_control(self):
self.volume_control = MusicControlWindow(self.media_player)
self.volume_control.show()
class MusicControlWindow(QWidget):
def __init__(self, player):
super().__init__()
self.player = player
# 创建控制音量滑块
self.volume_slider = QSlider(Qt.Horizontal)
self.volume_label = QLabel("Volume:")
# 设置音量滑块的范围和初始值
self.volume_slider.setMinimum(0)
self.volume_slider.setMaximum(100)
self.volume_slider.setValue(50)
# 创建垂直布局,并添加音量标签和音量滑块
layout = QVBoxLayout()
layout.addWidget(self.volume_label)
layout.addWidget(self.volume_slider)
# 设置窗口布局
self.setLayout(layout)
# 为按钮添加点击事件
self.volume_slider.valueChanged.connect(self.player.setVolume)
# 这个self.player.setVolume 便是通过滑块的改变来控制播放器音量
# 设置窗口属性
self.setWindowTitle("Music Control Window")
self.setGeometry(100, 100, 300, 200)
def closeEvent(self, event):
# 重写窗口关闭事件,在窗口关闭时不退出应用程序
event.ignore()
self.hide()
if __name__ == '__main__':
app = QApplication([])
w = MainWindow()
w.show()
w.media_player.play() #这一步很关键,意思就是当你关闭窗口时,音乐也同时暂停。
app.exec_()