前言前段时间写的Python自制一款炫酷音乐播放器,有不少小伙伴私信我,对播放器提了不少改进建议,让我完善播放器的功能 。今天音乐播放器2.0版本完成了,大家一起来看看是如何用python自制一款炫酷的音乐播放器的吧~
首先我们还是一起来看看实现的音乐播放器最终效果如何:
文章插图
私信小编01即可获取大量Python学习资源由于之前已经介绍过了音乐播放器V1.0版本的大致功能,如果有不了解的小伙伴可以先去看看V1.0版本的音乐播放器大致介绍 。【python自制一款炫酷音乐播放器,想听啥随便搜!】下面我们就介绍这个音乐播放器V2.0版本新加的部分功能制作过程 。
一、核心功能设计在之前的V1.0版本中,我们已经完成了播放器UI界面的设计,对播放器的画面布局进行排版设计;其次音乐播放器的最重要的核心功能根据关键字搜索自动爬取音乐并且进行音乐播放已经完成了 。当然也完成了一些播放器常见的附加功能,如播放方式列表循环、单曲循环、随机播放;当前上一首下一首播放;播放暂停开始;音量增加减少等 。
V2.0版本中,我们主要增加了以下几个核心功能:
- 对UI排版布局增加子列表页面,主要包括最近播放、喜爱的歌、歌词显示、本地音乐播放4个子列表页面
- 音乐本地下载及添加我喜爱的歌曲功能
- 我喜爱的歌内容保存及初始化读取我喜爱的歌列表显示,喜爱歌曲列表播放功能
- 当前播放歌曲歌词读取显示功能
- 读取播放本地歌曲功能
V2.0版本中我们将新增的几个子列表页面放在界面中间主体右侧,叠加在音乐搜索显示列表页 。这里我们使用的还是pyqt5 。添加子列表页面核心设计代码如下:
def init_ui(self):self.main_layout.addWidget(self.up_widget, 0, 0, 1, 110)self.main_layout.addWidget(self.left_widget, 1, 0, 90, 20)self.main_layout.addWidget(self.right_widget, 1, 20, 90, 90)# 22右侧部件在第0行第3列,占8行9列self.main_layout.addWidget(self.down_widget, 100, 0, 10, 110)self.main_layout.addWidget(self.close_widget, 0, 105, 1, 5)# 左侧部件在第0行第0列,占1行3列self.down_layout.addWidget(self.label, 1, 0, 1, 1)self.setCentralWidget(self.main_widget)# 设置窗口主部件self.tabWidget = QTabWidget(self)self.tabWidget.setGeometry(QRect(33, 20, 716, 471))self.tab = QWidget()self.tab.setObjectName("tab")self.tab_layout = QGridLayout()self.tab.setLayout(self.tab_layout)self.listwidget = QListWidget(self.tab)self.label361 = QLabel(self)self.label361.setText("")self.label361.setStyleSheet("color:#6DDF6D")self.tab_layout.addWidget(self.label361, 0, 1, 1, 1)self.button_1235 = QPushButton(icon('fa.download', color='#D0D0D0', font=24), "下载全部")self.button_1235.clicked.connect(self.downloadalls)self.button_1235.setStyleSheet('''QPushButton{background:#222225;border-radius:5px;}QPushButton:hover{background:#303030;}''')self.tab_layout.addWidget(self.button_1235, 0, 2, 1, 1)self.button_1236 = QPushButton(icon('fa.trash-o', color='#D0D0D0', font=24), "清空列表")self.button_1236.clicked.connect(self.dell)self.button_1236.setStyleSheet('''QPushButton{background:#222225;border-radius:5px;}QPushButton:hover{background:#303030;}''')self.tab_layout.addWidget(self.button_1236, 0, 3, 1, 1)self.listwidget.doubleClicked.connect(lambda: self.change_func(self.listwidget))self.listwidget.setContextMenuPolicy(Qt.CustomContextMenu)self.listwidget.customContextMenuRequested[QPoint].connect(self.myListWidgetContext)self.listwidget.setStyleSheet(self.css)self.listwidget.setObjectName("listWidget")self.tab_layout.addWidget(self.listwidget, 1, 0, 1, 4)self.tabWidget.addTab(self.tab, "搜索页")self.tab2 = QWidget()self.tab2.setObjectName("tab")self.tab2_layout = QGridLayout()self.tab2.setLayout(self.tab2_layout)self.listwidget2 = QListWidget(self.tab2)self.listwidget2.doubleClicked.connect(lambda: self.change_funcse(self.listwidget2))self.listwidget2.setContextMenuPolicy(Qt.CustomContextMenu)self.listwidget2.customContextMenuRequested[QPoint].connect(self.myListWidgetContext2)self.listwidget2.setStyleSheet(self.css)self.listwidget2.setObjectName("listWidget2")self.listwidget2.setContextMenuPolicy(3)self.tab2_layout.addWidget(self.listwidget2, 0, 0, 1, 1)self.tabWidget.addTab(self.tab2, "最近播放")self.tab3 = QWidget()self.tab3.setObjectName("tab")self.tab3_layout = QGridLayout()self.tab3.setLayout(self.tab3_layout)self.label223 = QLabel(self)# self.label5.setScaledContents(True)pix_img = QPixmap(str(data + '/backdown.png'))pix = pix_img.scaled(100, 100, Qt.KeepAspectRatio)self.label223.setPixmap(pix)# self.label5.setMaximumSize(1,1)self.tab3_layout.addWidget(self.label223, 0, 0, 1, 1)self.button_1237 = QPushButton(icon('fa.play', color='#FFFFFF', font=24), "播放全部")self.button_1237.clicked.connect(self.allplaylove)self.button_1237.setStyleSheet('''QPushButton{background:#EC4141;border-radius:5px;}QPushButton:hover{background:#E92121;}''')self.tab3_layout.addWidget(self.button_1237, 0, 1, 1, 1)self.button_1235 = QPushButton(icon('fa.download', color='#D0D0D0', font=24), "下载全部")self.button_1235.clicked.connect(self.downloadalllove)self.button_1235.setStyleSheet('''QPushButton{background:#222225;border-radius:5px;}QPushButton:hover{background:#303030;}''')self.tab3_layout.addWidget(self.button_1235, 0, 2, 1, 1)self.button_1236 = QPushButton(icon('fa.trash-o', color='#D0D0D0', font=24), "清空列表")self.button_1236.clicked.connect(self.delove)self.button_1236.setStyleSheet('''QPushButton{background:#222225;border-radius:5px;}QPushButton:hover{background:#303030;}''')self.tab3_layout.addWidget(self.button_1236, 0, 3, 1, 1)self.listwidget3 = QListWidget(self.tab3)self.listwidget3.doubleClicked.connect(lambda: self.change_funclove(self.listwidget3))self.listwidget3.setContextMenuPolicy(Qt.CustomContextMenu)self.listwidget3.customContextMenuRequested[QPoint].connect(self.myListWidgetContext3)self.listwidget3.setStyleSheet(self.css)self.listwidget3.setObjectName("listWidget3")self.tab3_layout.addWidget(self.listwidget3, 1, 0, 1, 4)self.tabWidget.addTab(self.tab3, "喜爱的歌")self.tab4 = QWidget()self.tab4.setObjectName("tab")self.tab4_layout = QGridLayout()self.tab4.setLayout(self.tab4_layout)self.listwidget4 = QListWidget(self.tab4)# self.listwidget4.doubleClicked.connect(lambda: self.change_func(self.listwidget))self.listwidget4.setStyleSheet(self.css)self.listwidget4.setObjectName("listWidget4")self.tab4_layout.addWidget(self.listwidget4, 0, 0, 1, 1)self.tabWidget.addTab(self.tab4, "歌词")self.tab5 = QWidget()self.tab5.setObjectName("tab5")self.tab5_layout = QGridLayout()self.tab5.setLayout(self.tab5_layout)self.listwidget5 = QListWidget(self.tab5)self.listwidget5.doubleClicked.connect(lambda: self.change(self.listwidget5))self.listwidget5.setContextMenuPolicy(Qt.CustomContextMenu)self.listwidget5.customContextMenuRequested[QPoint].connect(self.myListWidgetContext5)self.button_12351 = QPushButton(icon('fa.download', color='#D0D0D0', font=24), "添加目录")self.button_12351.clicked.connect(self.add)self.button_12351.setStyleSheet('''QPushButton{background:#222225;border-radius:5px;}QPushButton:hover{background:#303030;}''')self.tab5_layout.addWidget(self.button_12351, 0, 2, 1, 1)self.button_12361 = QPushButton(icon('fa.trash-o', color='#D0D0D0', font=24), "清空列表")self.button_12361.clicked.connect(self.dellocal)self.button_12361.setStyleSheet('''QPushButton{background:#222225;border-radius:5px;}QPushButton:hover{background:#303030;}''')self.tab5_layout.addWidget(self.button_12361, 0, 3, 1, 1)self.listwidget5.setStyleSheet(self.css)self.listwidget5.setObjectName("listWidget5")self.tab5_layout.addWidget(self.listwidget5, 1, 0, 1, 4)self.tabWidget.addTab(self.tab5, "本地歌曲")self.right_layout.addWidget(self.tabWidget, 3, 0, 100, 90)
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 《水浒传》中武松的相关情节?水浒传里面的武松是怎样的一个人
- 鼻子有火气是什么原因?
- 什么叫自闭症
- 鼻子火气重怎么降火?
- 职业拳击|赛前称重结束!明日,女子职业拳击将诞生P4P第一人
- lgd为什么叫lxo?lgd relx
- 打完针后一直疼
- 人类第一次超音速飞行?美国超音速飞行器
- 一场秋雨一场寒是哪首诗?一场秋雨一场寒是什么诗
- 一念起、万水千山?一路踏遍千山和万水