前提・実現したいこと
tkinterを用いて、pyaudioで取り込んだリアルタイムの波形を表示したい。
発生している問題・エラーメッセージ
真っ白なキャンバスが表示されるだけで、波形表示ができない。
該当のソースコード
python
1import tkinter as tk 2import tkinter.ttk as ttk 3import pyaudio 4import matplotlib.pyplot as plt 5import numpy as np 6from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg 7from matplotlib.animation import FuncAnimation 8 9def click(): 10 P = pyaudio.PyAudio() 11 stream = P.open(format=pyaudio.paInt16, channels=1, rate=44100, frames_per_buffer=8820, input=True, output=False) 12 ani = FuncAnimation(fig,update) 13 14def update(Z): 15 input = stream.read(8820, exception_on_overflow=False) 16 ndarray = np.frombuffer(input, dtype='int16') 17 ax.cla() 18 ax.plot(ndarray) 19 frame.after(200) 20 21root = tk.Tk() 22root.title("abc") 23root.geometry("800x600") ##### guiの用意 24 25frame = tk.Frame(root) ##### frameの用意 26 27fig = plt.figure() 28ax = fig.add_subplot(1,1,1) 29 30canvas = FigureCanvasTkAgg(fig, master=frame) ##### frameにcanvasを置く 31canvas.draw() ##### canvasを書く? 32 33canvas.get_tk_widget().pack() ##### canvasを配置 34frame.grid(row=0, column=0, columnspan=10, rowspan=5, padx=10, pady=10) ##### frameを配置 35 36button = tk.Button(root, text='Start', command=click) 37 38button.grid(row=6, column=11, columnspan=1, rowspan=1, padx=10, pady=10) 39 40root.mainloop()
試したこと
threadingにて他の関数の場合問題なく起動することを確認
補足情報(FW/ツールのバージョンなど)
python3
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。