我正试图在我的电脑上编写一个吉他调音程序。主要目标是创建一个应用程序,该应用程序能够使用麦克风捕捉音频,进行一些分析,并将结果输出给用户,从而允许他们调整乐器
我在我的一个函数中遇到了一个奇怪的问题。我尝试更改标签两次-第一次是在函数启动时,第二次是在3秒钟后。但是,在等待结束时,标签只更新一次(实际上只显示* recording...
文本)。我还注意到,我的整个GUI一旦(我猜)开始执行stateL
标签after
就会冻结
代码片段(不关心pyAudio部分,它尚未更改):
def gather_input(self):
self.stateL.configure(text="Starting recording in 3 sec. Prepare!")
self.stateL.after(3000, self.stateL.configure(text="* recording..."))
# p = pyaudio.PyAudio()
#
# stream = p.open(format=self.FORMAT,
# channels=self.CHANNELS,
# rate=self.RATE,
# input=True,
# frames_per_buffer=self.CHUNK)
#
# frames = []
#
# for i in range(0, int(self.RATE / self.CHUNK * self.RECORD_SECONDS)):
# data = stream.read(self.CHUNK)
# frames.append(data)
#
# stream.stop_stream()
# stream.close()
# p.terminate()
#
# self.stateL.configure(text="Done recording!")
#
# return frames
“我的其他功能”中的按钮行:
self.recButton = ttk.Button(self.mainLF, text="Start rec.", command=self.gather_input)
等待3秒钟后,我的目标是继续执行该功能,保存声音样本并执行其他一些操作(例如,在录制结束时再次更改标签,就像这里一样)。此外,我甚至不确定在after
部分使用self.stateL.configure
是否正确,或者我是否应该以其他方式这样做
要回答问题中的主要问题,您需要使用lambda来修复该特定问题
更改:
致:
要解决评论中提到的问题,您可能需要尝试以下方法
你需要建立一些方法来让事情按照你想要的方式进行。您还需要将一些变量更改为类属性
试试这个,如果有帮助请告诉我
相关问题 更多 >
编程相关推荐