基于multiprocess队列的Tkinter类内Matplotlib实时绘图问题
Python 3.11下Tkinter子窗口结合多进程实现Matplotlib实时绘图的问题
我在Python 3.11环境中开发Tkinter GUI程序,具体场景如下:
- 通过子类创建子窗口
- 使用
multiprocessing模块启动耗时计算进程(该进程存在未知时延),计算结果会推入队列 - 子窗口主进程需要基于队列中的数据,通过Matplotlib实现绘图的实时更新
已尝试的方案及问题
- 方案一:参考实时绘图的实现逻辑,单独运行时功能正常,但将代码嵌入子窗口类中后完全失效,无法实现实时更新。
- 方案二:直接使用Tkinter Canvas承载Matplotlib绘图,仅在Anaconda 3.9的Spyder环境中可以正常运行,切换到Python 3.11环境后完全失效。
核心需求
我需要实现的功能必须满足以下三点:
- 子窗口类可调用类外定义的函数
- 子窗口类可使用类外定义的全局变量
- 绘图能够按照设定周期自动更新数据并刷新
我已为此问题困扰一个月,只要能实现周期性数据监控绘图的功能,任何可行方案均可。
内容的提问来源于stack exchange,提问作者Matt Reed
相关产品推荐
相关产品推荐

