You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter多窗口嵌入Matplotlib画布出现内容同步重复异常求助

问题成因

两次创建Matplotlib图表时均为plt.figure()传入了相同的编号1,是异常的核心诱因。
Matplotlib中plt.figure(num)的执行逻辑为:若编号num对应的figure实例已存在,将直接返回该现有实例,而非创建全新的独立实例。因此Analysis_window中获取的my_fig1本质上和main_window中创建的fig是同一个对象,后续对my_ax1的所有配置修改实际都作用于同一个figure,自然会出现两个窗口图表行为一致、设置互相继承的现象。

解决方案
  • 方案1:为不同窗口的图表指定不同的figure编号,或直接省略编号参数让Matplotlib自动分配唯一标识,每次调用都会生成独立figure:
# 主窗口使用编号1,分析窗口使用编号2做区分
my_fig1 = plt.figure(2, figsize = (12, 6), dpi = 80, constrained_layout = True)
# 也可直接省略编号,由Matplotlib自动分配
my_fig1 = plt.figure(figsize = (12, 6), dpi = 80, constrained_layout = True)
  • 方案2(更适配Tkinter嵌入场景):直接使用Matplotlib面向对象接口创建figure,完全绕过pyplot的全局状态管理,从根源上避免跨窗口串图问题:
from matplotlib.figure import Figure

# 直接实例化Figure对象,不调用plt.figure接口
my_fig1 = Figure(figsize = (12, 6), dpi = 80, constrained_layout = True)
my_ax1 = my_fig1.add_subplot()
# 后续绘图、嵌入Tkinter容器的逻辑与原有代码完全兼容

内容的提问来源于stack exchange,提问作者Kennerdol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:06:05