将线程与python-pyqt一起使用



我正试图使用pyqt4在python中制作一个GUI,该GUI包含一个与USRP连接的瀑布汇。问题是数据应该连续显示在瀑布汇中,这使得GUI冻结,同时我不能使用其他按钮。我一直在检查是否使用线程,但到目前为止,我所理解的是,在线程中,我可以只放入将在最后给出结果的函数,而不能放入将连续给出结果的功能,我希望在主GUI中看到它。

任何关于如何从瀑布下沉中看到连续结果而不冻结主GUI的想法。

有几种方法可以做到这一点,但基本上要么是

  1. 将瀑布式下沉分解为大块的工作,GUI可以定期执行这些工作。例如,不是在GUI调用的函数中不断更新瀑布汇,而是只有一个"短"的更新(一个"时间步长"),然后函数立即返回;通过QTimer定期调用函数
  2. 通过使用QThread实例中实例化的QObject,使瀑布接收器在单独的线程中执行;并使sink函数每隔一段时间发出一个信号,比如在瀑布更新的每个"时间步长"

您可以从QThread派生一个类。在run函数中进行处理,并将数据存储在某些数据结构中。从主线程启动此线程,并通过适当的同步从该数据结构中获取数据。这样处理不会冻结主UI线程。

的一些参考文献

PyQt 中带有QThread的后台线程

在PyQt中使用QThread的正确方法示例?

相关内容

  • 没有找到相关文章

最新更新