我曾经使用TKinter作为我的GUIS,现在正试图转移到QT Designer。我也是基于事件的编程的新手。我想要做的是在按下开始按钮后连续听取串口上的通信。
我想调用一个函数update(),它接收数据并对其进行操作并将其写入文件。然后必须再次调用update()之前处理排队的任何其他事件。显然,如果我使用while循环,我的CPU使用率将达到100%,并且我的GUI变得无法响应。在TKinter中,我通过使用after_idle调用解决了这个问题(杂乱),只要GUI处于空闲状态,就会调用update()。
使用QT做这种事情的最佳做法是什么?
答案 0 :(得分:0)
使用线程监控串口。使用适当的机制与UI(主要)thead进行通信。
通过这种方式,您可以编写通信模块,而无需担心UI的事件基础特性。当然你仍然不能使用忙碌的while循环来收听串口。但是使用通常的read()方法和超时是可以的。
Queue非常适合将数据发送到UI,您可以直接从通信线程中写入文件。