PyQt5에 오디오파일 읽어와서 파형 출력하는 방법
조회수 1315회
PyQt에 대해 공부하는 중인데 오디오파일을 읽어와서 그 오디오파일의 파형을 GUI에다가 출력하고 싶은데 인터넷으로 찾아서 공부를 하니 matplotlib과 연동해서 그래프를 출력하는 방법이 있어서 공부하는 중입니다. 하지만 대부분의 코드가 layout을 생성해 그 layout에 파형을 출력 할 canvas를 추가해서 파형을 출력하는 방식이다. 저는 layout을 사용하지않고 파형을 출력할 수 있는 방법을 알고 싶습니다.
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
import pandas_datareader.data as web
import pandas as pd
from pandas import Series, DataFrame
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setupUI()
def setupUI(self):
self.setGeometry(600, 200, 1200, 600)
self.setWindowTitle("PyChart Viewer v0.1")
self.setWindowIcon(QIcon('icon.png'))
self.lineEdit = QLineEdit()
self.pushButton = QPushButton("차트그리기")
self.pushButton.clicked.connect(self.pushButtonClicked)
self.fig = plt.Figure()
self.canvas = FigureCanvas(self.fig)
leftLayout = QVBoxLayout()
leftLayout.addWidget(self.canvas)
# Right Layout
rightLayout = QVBoxLayout()
rightLayout.addWidget(self.lineEdit)
rightLayout.addWidget(self.pushButton)
rightLayout.addStretch(1)
layout = QHBoxLayout()
layout.addLayout(leftLayout)
layout.addLayout(rightLayout)
layout.setStretchFactor(leftLayout, 1)
layout.setStretchFactor(rightLayout, 0)
self.setLayout(layout)
def pushButtonClicked(self):
code = self.lineEdit.text()
df = web.DataReader(code, "yahoo")
df['MA20'] = df['Adj Close'].rolling(window=20).mean()
df['MA60'] = df['Adj Close'].rolling(window=60).mean()
ax = self.fig.add_subplot(111)
ax.plot(df.index, df['Adj Close'], label='Adj Close')
ax.plot(df.index, df['MA20'], label='MA20')
ax.plot(df.index, df['MA60'], label='MA60')
ax.legend(loc='upper right')
ax.grid()
self.canvas.draw()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyWindow()
window.show()
app.exec_()
위의 코드가 제가 공부한 코드인데 layout을 사용하지않고 파형을 출력할 수 있는 방법을 알고싶습니다. layout을 빼고 canvas만 생성해서 코드를 실행하면 파형일 출력이 안된다.
댓글 입력