Python tkinter和Matplotlib绘制3D动态图像

一、目标

1、将Matplotlib绘制的3D图像显示在tkinter定义的界面中,便于设计更友好的程序界面。如下图所示。

2、图像动态更新
3、关闭程序时安全退出

二、实现方法

1、使用tkinter的frame组件作为绘图的容器;
2、使用matplotlib的FigureCanvasTkAgg函数,将图像绘制在frame容器里。FigureCanvasTkAgg函数是一个渲染器,执行绘图的这个动作,使物体显示在屏幕上。主要代码如下:

# 创建一个容器, 没有画布时的背景
frame1 = Frame(root, bg="#ffffff")
frame1.place(x=5, y=50, width=690, height=700)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
fig = plt.figure(figsize=(6.5, 7), edgecolor='blue')
ax = Axes3D(fig)
# 定义刻度
ax.set_xlim(0, 100)
ax.set_ylim(0, 100)
ax.set_zlim(0, 100)
canvas = FigureCanvasTkAgg(fig, master=frame1)

3、图像显示不能用show(),而是用draw()。主要代码如下:

canvas.draw()
# 显示画布
canvas.get_tk_widget().place(x=0, y=0)

4、图像的动态更新使用tkinter的after方法,定义一个重复执行的函数就可以了。主要代码如下:

# 抛物线动态绘制函数
def 

你可能感兴趣的:(python学习,tkinter,canvas,python)