【问题标题】:Using threads with python pyqt?在 python pyqt 中使用线程?
【发布时间】:2014-11-26 02:55:54
【问题描述】:

我正在尝试使用 pyqt4 在 python 中制作一个 GUI,它包含一个与 USRP 连接的瀑布接收器。问题是数据应该连续显示在瀑布接收器中,这使得 GUI 冻结,同时我不能使用其他按钮。我正在检查是否使用线程,但直到现在我所理解的是,在线程中我可以只放置最终会给出结果的函数,而不是会连续给出结果的函数,我想在主 GUI 中看到它.

任何想法如何使从瀑布水槽中看到连续结果而不冻结主 GUI 成为可能。

【问题讨论】:

标签: python multithreading pyqt pyqt4 usrp


【解决方案1】:

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

  1. 将您的瀑布槽分解为多个工作块,GUI 可以定期执行这些工作块。例如,与其在 GUI 调用的函数中不断更新瀑布汇,不如只进行“短”更新(一个“时间步长”),然后让函数立即返回;通过 QTimer 定期调用该函数。
  2. 通过使用在 QThread 实例中实例化的 QObject 使瀑布接收器在单独的线程中执行;并让 sink 函数定期发出一个信号,比如在瀑布更新的每个“时间步”。

【讨论】:

    【解决方案2】:

    您可以从QThread 派生一个类。在运行函数中进行处理并将数据存储在某种数据结构中。从你的主线程启动这个线程,并从这个数据结构中以适当的同步方式获取数据。这种方式处理不会冻结您的主 UI 线程。

    一些参考资料

    Background thread with QThread in PyQt

    Example of the right way to use QThread in PyQt?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-11
      • 2021-06-03
      • 2011-12-13
      • 2018-10-10
      • 1970-01-01
      • 2014-03-25
      • 2011-04-20
      • 2015-04-19
      相关资源
      最近更新 更多