Python 使用Tkinter在while循环中录制语音

Python 使用Tkinter在while循环中录制语音,python,while-loop,tkinter,audio-recording,Python,While Loop,Tkinter,Audio Recording,我正在编写一个语音录制应用程序,我想在用户按下Tkinter中的按钮时开始录制,并在用户松开按钮时停止录制 import Tkinter def record(): while True Recordning runtines... if <button is released> stop audio steam... break main = Tkinter.Tk() b =

我正在编写一个语音录制应用程序,我想在用户按下Tkinter中的按钮时开始录制,并在用户松开按钮时停止录制

import Tkinter

def record():
    while True
          Recordning runtines...
          if <button is released>
             stop audio steam...
             break


main = Tkinter.Tk()

b = Tkinter.Button(main, text='rec', command=record)
b.place(x="10", y="10")

main.mainloop()
导入Tkinter
def记录():
虽然是真的
正在录制runtines。。。
如果
停止音频蒸汽。。。
打破
main=Tkinter.Tk()
b=Tkinter.Button(main,text='rec',command=record)
b、 放置(x=“10”,y=“10”)
main.mainloop()

如何实现“如果按钮被释放”?我需要使用线程吗?

如果您不想在录制时冻结GUI,我建议您使用多线程。点击和释放按钮可以通过事件完成。我已经将代码包装到一个类中,因此它还包含完成工作线程的标志

import Tkinter as tk
import threading

class App():
    def __init__(self, master):
        self.isrecording = False
        self.button = tk.Button(main, text='rec')
        self.button.bind("<Button-1>", self.startrecording)
        self.button.bind("<ButtonRelease-1>", self.stoprecording)
        self.button.pack()

    def startrecording(self, event):
        self.isrecording = True
        t = threading.Thread(target=self._record)
        t.start()

    def stoprecording(self, event):
        self.isrecording = False

    def _record(self):
        while self.isrecording:
            print "Recording"

main = tk.Tk()
app = App(main)
main.mainloop()
将Tkinter作为tk导入
导入线程
类App():
定义初始(自我,主):
self.isrecording=False
self.button=tk.button(main,text='rec')
self.button.bind(“,self.startrecording)
self.button.bind(“,self.stoprecording)
self.button.pack()
def开始记录(自身、事件):
self.isrecording=True
t=线程。线程(目标=自身记录)
t、 开始()
def停止录制(自身、事件):
self.isrecording=False
def_记录(自):
自我记录时:
打印“记录”
main=tk.tk()
应用程序=应用程序(主)
main.mainloop()

如果您不想在录制时冻结GUI,我建议您使用多线程。点击和释放按钮可以通过事件完成。我已经将代码包装到一个类中,因此它还包含完成工作线程的标志

import Tkinter as tk
import threading

class App():
    def __init__(self, master):
        self.isrecording = False
        self.button = tk.Button(main, text='rec')
        self.button.bind("<Button-1>", self.startrecording)
        self.button.bind("<ButtonRelease-1>", self.stoprecording)
        self.button.pack()

    def startrecording(self, event):
        self.isrecording = True
        t = threading.Thread(target=self._record)
        t.start()

    def stoprecording(self, event):
        self.isrecording = False

    def _record(self):
        while self.isrecording:
            print "Recording"

main = tk.Tk()
app = App(main)
main.mainloop()
将Tkinter作为tk导入
导入线程
类App():
定义初始(自我,主):
self.isrecording=False
self.button=tk.button(main,text='rec')
self.button.bind(“,self.startrecording)
self.button.bind(“,self.stoprecording)
self.button.pack()
def开始记录(自身、事件):
self.isrecording=True
t=线程。线程(目标=自身记录)
t、 开始()
def停止录制(自身、事件):
self.isrecording=False
def_记录(自):
自我记录时:
打印“记录”
main=tk.tk()
应用程序=应用程序(主)
main.mainloop()