0

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

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

4

2 回答 2

0

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

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

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

一些参考资料

PyQt中带有QThread的后台线程

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

于 2014-10-01T09:47:16.610 回答