疫情肆虐,憋在家實在無聊,索性寫點東西,于是就有了這個極極極極極簡的音樂播放器。
這個極極極簡的音樂播放器類似于“閱后即焚”的軟件,播放器可以隨機播放歌曲,獲取下一首歌曲,不能重新播放上一首歌曲,不能獲取歌曲的名稱和演唱者。聽過的歌曲,就像過眼云煙,放完即散。
下面來看看如何用Python實現這個音樂播放器軟件吧!
首先,我們來創建這個播放器的UI界面。這個播放器一共有6個控件:
基于以上控件,我們用一個網格布局來排列;
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)
新聞熱點
疑難解答