用Python和PyQt5打造你的专属音乐播放器!轻松创建带封面的音乐列表

在本文中,我们将介绍如何使用Python的PyQt5库创建一个简单的音乐播放器。这个音乐播放器可以显示歌曲的封面,并且点击封面就可以播放对应的歌曲。

依赖库

首先,我们需要安装PyQt5库。可以使用以下命令进行安装:

pip install PyQt5

功能如下:

  1. 显示歌曲列表:程序会在指定的目录(在这个例子中是"D:/song")中搜索所有的.mp3文件和.jpg文件。每一首歌曲都会与一个封面图片配对,并显示在列表中。

  2. 点击播放音乐:当你点击列表中的一首歌(或者说,点击一张封面图片)时,程序会开始播放对应的音乐。

说明

这个音乐播放器可以显示歌曲的封面,并且点击封面就可以播放对应的歌曲。我们通过逐步解析代码片段的方式,详细讲解了每个步骤和代码的功能。

代码解析

1. 导入所需的模块和库

import os
import sys

from PyQt5.QtCore import QUrl, QSize, Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QListWidget, QListWidgetItem, QVBoxLayout

这些导入语句包含了我们需要的所有PyQt5模块和其他标准库。

2. 定义全局变量

# Directory where your songs and covers are located
SONG_DIR = "D:/song"

这里定义了一个全局变量SONG_DIR,用于存放你的歌曲和封面的目录。

3. 创建主窗口类

class HomePage(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

我们定义了一个名为HomePage的类,这个类继承自QWidget。在这个类中,我们定义了一些方法来初始化UI,获取歌曲和封面,以及播放歌曲。

4. 初始化UI

def initUI(self):
    self.setWindowTitle('LIY若依_音乐播放器')
    self.setGeometry(100, 100, 600, 500)

    self.layout = QVBoxLayout()
    self.setLayout(self.layout)

    # Title label
    self.title_label = QLabel('LIY若依_音乐播放器', self)
    self.title_label.setStyleSheet('font-size: 24px; font-weight: bold; margin-bottom: 20px;')
    self.layout.addWidget(self.title_label, alignment=Qt.AlignCenter)

    # Song list
    self.song_list = QListWidget(self)
    self.song_list.setStyleSheet('QListWidget { background-color: #f0f0f0; border: none; }')
    self.song_list.setViewMode(QListWidget.IconMode)
    self.song_list.setIconSize(QSize(250, 250))
    self.song_list.setSpacing(10)
    self.song_list.setResizeMode(QListWidget.Adjust)
    self.layout.addWidget(self.song_list)

    # Load songs and covers
    songs_with_covers = self.get_songs_with_covers()
    for song_info in songs_with_covers:
        item = QListWidgetItem()
        item.setText(song_info['song'].replace('.mp3', ''))
        cover_path = os.path.join(SONG_DIR, song_info['cover'])
        item.setIcon(QIcon(cover_path))
        item.setData(Qt.UserRole, song_info)  # Store song info as data
        self.song_list.addItem(item)

    # Audio player
    self.mediaPlayer = QMediaPlay
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LIY若依

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值