我正在探索Enthought的Traits/TraitsUI/Chaco软件包,因为我想利用强大的动态绘图工具。我有来自外部来源的数据,我希望用它来更新一组查科图。我已经研究了spectrum.py
和data_stream.py
示例,但它们定期从重复 Timer 事件的流/文件/源中提取数据,而不是接收异步输入事件。
我不清楚如何删除计时器并异步触发数组更新。也许可以使用计时器进行轮询,但我想扩展以合并几个不同的外部源,我需要某种"服务器"进程来管理它 - 它不能真正被 GUI 主循环阻止。截至目前,我想合并一个 TCP 服务器,该服务器接受不可预测的传入客户端连接,每个连接都提供要绘制的新数据。
是否可以设置第二个线程来处理所有套接字通信并使用它来调用.set_data()
以触发绘图重绘?或者这会干扰 GUI 主循环和/或导致特征/查科中的竞争条件吗?
或者有没有另一种方法来思考这个问题,在特质范式中更有意义?
'set_data' 确实会触发重绘,因此不需要计时器。但请注意,重绘发生在主 gui 线程中。