我想创建一个wxpython应用程序,它在无限循环内缓冲音频输入,直到点击chekbox。我尝试了以下代码,但它没有响应任何事件,只是在while循环中迭代。请帮我继续我的项目工作。提前致谢
while 1:
#buffering of audio data
if self.checkbox_1.GetValue(): #checking for an external event but this external event is not working and i cant even check the check box
break
答案 0 :(得分:0)
答案是线程。通过创建无限循环,您将阻止UI的事件循环。所以在一个单独的线程中做缓冲片。在线程中,您将需要以块的形式进行缓冲(一次像一个千字节)。在每个块之后,使用wxPython的线程安全方法之一来询问wxPython是否选中了复选框。线程安全的方法是wx.CallAfter,wx.CallLater和wx.PostEvent。我会推荐第一个或最后一个。
wxPython wiki解释了如何添加线程:
我还有一篇关于这个主题的旧文章: