这是一个创建于 1384 天前的主题,其中的信息可能已经有所发展或是发生改变。
在网上找的代码,修改的时候发现如果在 drawImg 函数中注释掉 ax.clear()那么出来的绘制出来颜色会一直变化。
去除 ax.clear()以后除了颜色变化还有其他的副作用吗?
import numpy as np
from tkinter import *
from tkinter import messagebox
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
# 创建画布需要的库
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
root = Tk()
root.title("tkinter + Matplotlib")
root.geometry('700x750')
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=root)
canvas.draw()
# 显示画布
canvas.get_tk_widget().pack()
i = 0
# 定义存储坐标的空数组
x = []
y = []
z = []
# 抛物线动态绘制函数
def drawImg():
global i
i += 1
global ax
#ax.clear()
ax.set_xlim(0, 100)
ax.set_ylim(0, 100)
ax.set_zlim(0, 100)
global x
global y
global z
t = i * 0.1
dtax = 20 * t * np.sin(0.25 * np.pi)
x.append(dtax)
dtay = 20 * t * np.cos(0.25 * np.pi)
y.append(dtay)
dtaz = 100 - t ** 2 * 0.5 * 10
z.append(dtaz)
ax.plot(x, y, z)
canvas.draw()
global afterHandler
afterHandler = root.after(100, drawImg)
drawImg()
def on_closing():
root.after_cancel(afterHandler)
answer = messagebox.askokcancel("退出", "确定退出吗?")
if answer:
plt.close('all')
root.destroy()
else:
root.after(1000, drawImg)
root.protocol("WM_DELETE_WINDOW", on_closing)
root.mainloop()
|
|
1
hxhc 2021-01-19 09:26:21 +08:00
|