wxpython:事件发生时中断while循环

wxpython:事件发生时中断while循环,wxpython,Wxpython,我想创建一个wxpython应用程序,它在无限while循环中缓冲音频输入,直到单击chekbox。我尝试了以下代码,但它没有响应任何事件,只是在while循环中迭代。请帮助我继续我的项目工作。提前谢谢 while 1: #buffering of audio data if self.checkbox_1.GetValue(): #checking for an external event but this external event is not wor

我想创建一个wxpython应用程序,它在无限while循环中缓冲音频输入,直到单击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

答案是线程。通过创建无限循环,您将阻塞UI的事件循环。因此,在一个单独的线程缓冲件。在线程中,您将需要分块进行缓冲(比如一次一个KB)。在每个块之后,使用wxPython的线程安全方法之一询问wxPython是否选中了复选框。线程安全方法是wx.CallAfter、wx.CallLater和wx.PostEvent。我推荐第一个或最后一个

wxPython wiki解释了如何添加线程:

我还有一篇关于这个话题的老文章: