栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

用python编写录音机——GUI控制录音开始与结束

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用python编写录音机——GUI控制录音开始与结束

老规矩,我们先来看代码

import pyaudio
import threading
import wave
import tkinter


class Recorder:
    def __init__(self, chunk=1024, channels=1, rate=64000):
        self.CHUNK = chunk
        self.FORMAT = pyaudio.paInt16
        self.CHANNELS = channels
        self.RATE = rate
        self._running = True
        self._frames = []

    def start(self):
        threading._start_new_thread(self.__recording, ())


    def __recording(self):
        self._running = True
        print('start recording')
        self._frames = []
        p = pyaudio.PyAudio()
        stream = p.open(format=self.FORMAT,
                        channels=self.CHANNELS,
                        rate=self.RATE,
                        input=True,
                        frames_per_buffer=self.CHUNK)
        while self._running:
            data = stream.read(self.CHUNK)
            self._frames.append(data)

        stream.stop_stream()
        stream.close()
        p.terminate()

    def stop(self):
        self._running = False
        print('stop')

    def save(self):

        p = pyaudio.PyAudio()

        wf = wave.open("001.wav", 'wb')
        wf.setnchannels(self.CHANNELS)
        wf.setsampwidth(p.get_sample_size(self.FORMAT))
        wf.setframerate(self.RATE)
        wf.writeframes(b''.join(self._frames))
        wf.close()
        print("Saved")


##主程序

# 创建窗口
window = tkinter.Tk()
# 给窗口命名
window.title("录音与播放器")
# 设置窗口大小
window.geometry("500x300")  #注意其中的x不是乘号!
re = Recorder()

# 设置一个录音按钮
b1 = tkinter.Button(window, text="开始录音", font=("FangSong", 14), width=10, height=1, command=re.start)
b1.place(x=100, y=100, anchor="nw")
# 设置一个停止按钮
b2 = tkinter.Button(window, text="结束录音", font=("FangSong", 14), width=10, height=1, command=re.stop)
b2.place(x=200, y=100, anchor="nw")
#设置一个保存按钮
b3 = tkinter.Button(window, text="保存录音", font=("FangSong", 14), width=10, height=1, command=re.save)
b3.place(x=300, y=100, anchor="nw")


# 主窗口循环
window.mainloop()


与通过输入控制录音的开始和结束的录音机相比(程序及解释见:用python编写录音机——通过输入控制录音的开始和结束)多了tkinter库。这个库也是python自带的库,不需要另外安装。


tkinter库,用来绘制GUI界面,存放按钮等。在此代码的主程序中,有大量的运用。

学习tkinter库时,可以与pygame的界面绘制进行对比。

创建窗口:

window = tkinter.Tk()

窗口命名:

window.title("名字")

窗口大小(注意,其中的长度和宽度之间用小写字母x连接):

window.geometry("500x300")

创建按钮:

b1 = tkinter.Button(window, text="开始录音", font=("FangSong", 14), width=10, height=1, command=re.start)

其中,第一个参数表示按钮绘制的窗口,text参数表示按钮上所显示的内容,font参数表示按钮上内容的字体字号,width和height分别表示按钮的宽的和高度,command参数链接到按下按钮所要执行的指令。

        按钮的位置:  

b1.place(x=100, y=100, anchor="nw")

参数anchor指起始位置(用north、south、east和west表示),这里的nw(northwest)表示的是以左上角的点为坐标原点。x和y分别表示按钮的左上角的点距离(在笛卡尔坐标系中,以左上角为坐标原点,水平向右的方向为x轴的正方向,竖直向下的方向为y轴的正方向。)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/841012.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号