QThread执行多次

时间:2013-01-18 00:58:45

标签: python pyqt4 signals-slots qthread

我在这里写了一个简短的程序,用于记录和回放我的鼠标动作。我在PyQt中实现了一个简单的GUI,并让它在过去工作。最近我决定更新代码,通过在主循环中实现QThread而不是使用processEvents()来减少“hacky”。​​

下面的代码执行,但表现得很奇怪。运行代码时,会发生以下情况:

  

输入1:我按下记录

     

控制台输出: isRecording = True

     

输入2:我按停止

     

控制台输出: Stopped!

     

输入3:我按播放

     

控制台输出: isRecording = True

     

输入4:我按停止

     

控制台输出:   Stopped!   Play!   Playback complete!

我不清楚为什么在按play之后程序会再次尝试录制,并且只有在按下停止后才会开始播放。此外,经过一段时间的古怪之后,它继续展现出这种类似的输出,并有微小的偏差。

我的猜测是根据我是否正在调用started的{​​{1}}或play成员函数来重新分配线程信号record。类。

非常感谢任何见解。

代码

CursorCapture

1 个答案:

答案 0 :(得分:0)

经过更多的调查和游戏,我发现了这个问题。将信号重新连接到插槽时,必须确保disconnect()以前的信号。发生的事情是:

记录。记录信号已连接。 按播放。由于记录信号不是断开连接,它首先触发。然后,播放信号被连接并执行。这种行为堆叠,这就是为什么事情表现得如此奇怪。