wxpython绘制音频效果


Posted in Python onNovember 18, 2019

本文实例为大家分享了wxpython绘制音频的具体代码,供大家参考,具体内容如下

#-*- coding: utf-8 -*-
 
################################################################################
## 使用wxPython的绘图模块wxPyPlot,需要数据可视化的时候,无需再借用其他的库或模块了
################################################################################
import numpy as np
import wx
import wx.lib.plot as wxPyPlot # 导入绘图模块,并命名为wxPyPlot
import wave
import pylab as pl
# 需要把数据封装进入MyDataObject中
def MyDataObject():
 # 50 个点的sin函数,用蓝色圆点表示
 data1 = 2.*np.pi*np.arange(100)/100.
 data1.shape = (50, 2)
 data1[:, 1] = np.sin(data1[:, 0])
 print ("debug:", data1.shape)
 markers = wxPyPlot.PolyMarker(data1, legend='Green Markers', colour='blue', marker='circle', size=1)
 # 50个点的cos函数,用红色表示
 data2 = 2.*np.pi*np.arange(100)/100.
 data2.shape = (50, 2)
 print ("debug: data2", len(data2))
 data2[:, 1] = np.cos(data2[:, 0])
 lines = wxPyPlot.PolySpline(data2, legend='Red Line', colour='red')
 GraphTitle = "Plot Data(Sin and Cos)"
 
 return wxPyPlot.PlotGraphics([markers, lines], GraphTitle, "X Axis", "Y Axis")
# 解析wav数据
def MyWavData(wav_filename=""):
 print('working')
 # 打开wav文档
 file = wave.open("mic4.wav", "r")
 # 读取格式信息
 # (nchannels, sampwidth,framerate, nframes, comptype, compname)
 params = file.getparams()
 nchannels, sampwidth, framerate, nframes = params[:4]
 print (nchannels, sampwidth, framerate, nframes)
 # 读取波形数据
 str_data = file.readframes(nframes)
 # 文件使用完毕,关闭文件
 file.close()
 # 将波形数据装换成数组
 wave_data = np.fromstring(str_data, dtype=np.short)
 wave_data.shape = (-1, 2)
 wave_data = wave_data.T # 矩阵转置
 time = np.arange(0, nframes) * (1.0 / framerate)
 # print ("debug: time:", len(time))
 # print ("debug: wave_data:", len(wave_data[0][0:len(time)]))
 # print ("debug: time:", time)
 # print ("debug: wave:", wave_data)
 time_and_wav = np.asarray([time, wave_data[0][0:len(time)]]).T
 print ("debug: len of time and wav: ", len(time_and_wav))
 print ("debug: time and wav: ", time_and_wav.shape)
 lines = wxPyPlot.PolySpline(time_and_wav, legend='Blue Line', colour='blue')
 GraphTitle = "the freq of wav file"
 return wxPyPlot.PlotGraphics([lines, ], GraphTitle, "time/s", "fre/Hz")
class TestFrame1(wx.Frame):
 def __init__(self, parent=None, id=wx.ID_ANY, title="Using wxPyPlot"):
  wx.Frame.__init__(self, parent, id, title, size=(800, 600))
  # 创建菜单栏
  self.mainmenu = wx.MenuBar()
  # 创建菜单
  menu = wx.Menu()
  menu.Append(100, 'Draw1', 'Draw plots1')
  self.Bind(wx.EVT_MENU, self.OnPlotDraw1, id=100)
  menu.Append(200, 'Draw_wav', 'Draw wav')
  self.Bind(wx.EVT_MENU, self.OnPlotDraw_wav, id=200)
  # 添加菜单到菜单栏
  self.mainmenu.Append(menu, '&Plot')
  # 设置菜单Bar
  self.SetMenuBar(self.mainmenu)
  # 创建状态栏,显示信息
  self.CreateStatusBar(2)
  self.pc = wxPyPlot.PlotCanvas(self) # 此处导入绘图面板
 
 def OnPlotDraw1(self, event):    # 绘图函数
  self.pc.Draw(MyDataObject())
 def OnPlotDraw_wav(self, event):
  self.pc.Draw(MyWavData())
def main():
 app = wx.App()
 # MyWavData()
 tf = TestFrame1()
 tf.Show()
 app.MainLoop()
# 测试wxPyPlot的代码
if __name__ == '__main__':
 main()

wxpython绘制音频效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中使用M2Crypto模块实现AES加密的教程
Apr 08 Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 Python
Python查找两个有序列表中位数的方法【基于归并算法】
Apr 20 Python
Python numpy中矩阵的基本用法汇总
Feb 12 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
python脚本调用iftop 统计业务应用流量的思路详解
Oct 11 Python
Python基础之高级变量类型实例详解
Jan 03 Python
python数据爬下来保存的位置
Feb 17 Python
使用python处理题库表格并转化为word形式的实现
Apr 14 Python
python collections模块的使用
Oct 16 Python
如何利用pycharm进行代码更新比较
Nov 04 Python
python实现简单的聊天小程序
Jul 07 Python
python导入不同目录下的自定义模块过程解析
Nov 18 #Python
解决django model修改添加字段报错的问题
Nov 18 #Python
python sorted方法和列表使用解析
Nov 18 #Python
在Django中实现添加user到group并查看
Nov 18 #Python
Django继承自带user表并重写的例子
Nov 18 #Python
Django自定义用户表+自定义admin后台中的字段实例
Nov 18 #Python
Django 实现Admin自动填充当前用户的示例代码
Nov 18 #Python
You might like
地摊中国 - 珍藏老照片
2020/08/18 杂记
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
js charAt的使用示例
2014/02/18 Javascript
14个有用的Jquery技巧分享
2015/01/08 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
详解如何在Vue项目中导出Excel
2019/04/19 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
python统计一个文本中重复行数的方法
2014/11/19 Python
python从入门到精通(DAY 3)
2015/12/20 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
python实现上传下载文件功能
2020/11/19 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
对python Tkinter Text的用法详解
2018/10/11 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
flask 实现token机制的示例代码
2019/11/07 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
2020/01/02 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
佳能法国商店:Canon法国
2019/02/14 全球购物
运动会广播稿50字
2014/01/26 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
英语教师求职信范文
2015/03/20 职场文书
会议通知范文
2015/04/15 职场文书
python requests模块的使用示例
2021/04/07 Python
实战Python爬虫爬取酷我音乐
2022/04/11 Python