在控制权返回到Qt事件循环之前,不会更新/绘制GUI。事件循环在主线程中运行,并处理与GUI的交互并协调信号/插槽系统。
在类似的插槽中调用Qt函数时
clickStop1(),Qt调用会运行,但不会立即重绘GUI。在这种情况下,控制
clickStop()只有在完成运行(即
clicked处理完信号的所有插槽)后才返回事件循环。
代码的主要问题是您
time.sleep(5)在主线程中有一个,这会阻止用户进行GUI交互以及重绘。您应将插槽的执行时间保持较短,以维护响应式GUI。
clicked()因此,我建议您进行修改,以使其
QTimer在指定的超时后触发单发。
QTimers不会阻塞主线程,因此将保持响应性。但是,请注意,与此同时,用户可能会与GUI交互!在等待
QTimer执行过程中,请确保它们不会通过用户交互来破坏程序的状态。



