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

Matplotlib嵌入Tkinter框架后图表完全空白无法显示求助

问题解决方法

你的代码存在两个核心问题,导致图表无法正常显示:

1. 混用Tkinter布局管理器

你给画布使用place(x=0,y=0)布局,给按钮使用pack()布局——Tkinter中同一个父组件(此处为root)不能同时混用不同的布局管理器,这会引发组件渲染冲突,导致图表被挤压或隐藏。

2. 缺少图表渲染触发步骤

创建Matplotlib画布后,必须调用canvas.draw()来触发图表的绘制渲染流程。

修正后的完整代码

import tkinter as tk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import numpy as np

root = tk.Tk()
root.title("Graphique Matplotlib dans Tkinter")
root.geometry("750x500")

t = np.arange(0, 3, 0.01)
# 使用plt.subplots更清晰地创建图和子图
fig, ax = plt.subplots(figsize=(7, 4))  # 调整尺寸适配窗口大小
ax.plot(t, 2 * np.sin(2 * np.pi * t))

# 创建画布并绑定到Tkinter窗口
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.draw()  # 触发图表渲染
# 统一使用pack布局,让画布填充窗口上部空间
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=True)

button = tk.Button(root, text="Cliquez-moi !")
button.pack(side=tk.BOTTOM)

root.mainloop()

额外说明

  • 若坚持使用place布局,需确保所有组件都采用place定位,同时调整figsize避免图表超出窗口范围,且必须保留canvas.draw()步骤。
  • 替换FigureCanvasTk为FigureCanvasTkAgg是因为后者是Matplotlib官方推荐的Tkinter后端组件,兼容性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:07:04