Pythonで作る、信号処理開発プラットフォーム用の音楽プレイヤー - Wizard Notes で作った音楽プレイヤーモジュールですが、CUIでは使いにくいので、PyQt5
を使って簡単なGUIを作ってみました。
実装
"""
date: 2020/08/10
author: @_kurene
"""
import os
import sys
import threading
from PyQt5.QtWidgets import QWidget, QPushButton, QGridLayout, QFileDialog
from PyQt5.QtWidgets import QLabel
from PyQt5.QtGui import QKeySequence
from PyQt5.QtWidgets import QApplication
from audioplayer import AudioPlayer
class PyAudioPylerGUI(QWidget):
def __init__(self):
super().__init__()
self.ap = AudioPlayer()
self.Init_UI()
self.show()
def Init_UI(self):
self.setGeometry(100, 100, 250, 250)
grid = QGridLayout()
self.setWindowTitle('PyAudioPyler')
button_play = QPushButton("Play")
button_pause = QPushButton("Pause")
button_stop = QPushButton("Stop")
button_exit = QPushButton("Exit")
button_dialog = QPushButton("Open file")
self.label = QLabel(self)
grid.addWidget(button_dialog, 0, 0, 1, 3)
grid.addWidget(button_play, 1, 0)
grid.addWidget(button_pause, 1, 1)
grid.addWidget(button_stop, 1, 2)
grid.addWidget(button_exit, 2, 0, 1, 3)
grid.addWidget(self.label, 3, 0, 1, 3)
button_dialog.clicked.connect(self.button_openfile)
button_play.clicked.connect(self.ap.play)
button_pause.clicked.connect(self.ap.pause)
button_stop.clicked.connect(self.ap.stop)
button_exit.clicked.connect(self.button_exit)
self.setLayout(grid)
def button_exit(self):
self.ap.terminate()
QApplication.quit()
def button_openfile(self):
filepath, _ = QFileDialog.getOpenFileName(self, 'Open file','c:\\',"Audio files (*.wav *.mp3 *.flac)")
filename = os.path.basename(filepath)
self.label.setText(filename)
self.label.adjustSize()
self.ap.set_audiofile(filepath)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = PyAudioPylerGUI()
app.exit(app.exec_())
実装のポイント
- PyQt5 のレイアウト
Init_UI()
でレイアウトを編集
QGridLayout()
を利用
grid.addWidget()
の引数で位置を指定
- ファイルダイアログ
QFileDialog()
QFileDialog.getOpenFileName()
の引数で読み込み可能なファイル拡張子を指定
- オーディオの再生モジュール
終わりに
今後気が向いたら、PyQtGraph
を使ってリアルタイムプロットもやってみたいところです。