首页 > 编程 > Python > 正文

Python使用PyQt5/PySide2编写一个极简的音乐播放器功能

2020-02-15 21:20:09
字体:
来源:转载
供稿:网友

疫情肆虐,憋在家实在无聊,索性写点东西,于是就有了这个极极极极极简的音乐播放器。

这个极极极简的音乐播放器类似于“阅后即焚”的软件,播放器可以随机播放歌曲,获取下一首歌曲,不能重新播放上一首歌曲,不能获取歌曲的名称和演唱者。听过的歌曲,就像过眼云烟,放完即散。

下面来看看如何用Python实现这个音乐播放器软件吧!

一、创建UI界面

首先,我们来创建这个播放器的UI界面。这个播放器一共有6个控件:

    左上角的程序关闭按钮; 左侧的播放状态标签; 顶部的slogan; 播放/暂停按钮; 下一首按钮; 播放进度条;

基于以上控件,我们用一个网格布局来排列;

class Music(QtWidgets.QMainWindow): def __init__(self): super().__init__() self.setFixedSize(400,200) self.setWindowTitle("州的先生") self.init_ui() self.custom_style() self.playing = False # 播放状态初始化为否 self.player = QMediaPlayer(self) # 设置样式 def custom_style(self): self.setStyleSheet('''  #main_widget{  border-radius:5px;  }  #play_btn,#pervious_btn,#next_btn{  border:none;  }  #play_btn:hover,#pervious_btn:hover,#next_btn:hover{  background:gray;  border-radius:5px;  cursor:pointer;  } ''') self.close_btn.setStyleSheet('''  QPushButton{  background:#F76677;  border-radius:5px;  }  QPushButton:hover{  background:red;  }''') self.status_label.setStyleSheet('''  QLabel{  background:#F7D674;  border-radius:5px;  } ''') # 初始化UI界面 def init_ui(self): # 窗口布局 self.main_widget = QtWidgets.QWidget() self.main_widget.setObjectName("main_widget") self.main_layout = QtWidgets.QGridLayout() self.main_widget.setLayout(self.main_layout) # 标题 self.title_lable = QtWidgets.QLabel("听者,如过眼云烟……") # 关闭按钮 self.close_btn = QtWidgets.QPushButton("") # 关闭按钮 self.close_btn.setFixedSize(15,15) # 音乐状态按钮 self.status_label = QtWidgets.QLabel("") self.status_label.setFixedSize(15,15) # 播放按钮 play_icon = qta.icon("fa.play-circle",) self.play_btn = QtWidgets.QPushButton(play_icon,"") self.play_btn.setIconSize(QtCore.QSize(80, 80)) self.play_btn.setFixedSize(82,82) self.play_btn.setObjectName("play_btn") # 下一首按钮 next_icon = qta.icon("fa.play-circle-o") self.next_btn = QtWidgets.QPushButton(next_icon,"") self.next_btn.setIconSize(QtCore.QSize(80,80)) self.next_btn.setFixedSize(82,82) self.next_btn.setObjectName("next_btn") # 进度条 self.process_bar = QtWidgets.QProgressBar() self.process_value = 0 self.process_bar.setValue(self.process_value) self.process_bar.setFixedHeight(5) self.process_bar.setTextVisible(False) self.main_layout.addWidget(self.close_btn,0,0,1,1) self.main_layout.addWidget(self.title_lable,0,1,1,1) self.main_layout.addWidget(self.status_label,1,0,1,1) self.main_layout.addWidget(self.play_btn, 1, 1, 1, 1) self.main_layout.addWidget(self.next_btn, 1, 2, 1, 1) self.main_layout.addWidget(self.process_bar,2,0,1,3) self.setCentralWidget(self.main_widget)            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表