【发布时间】:2015-06-26 09:16:15
【问题描述】:
我在使用 qt4 后端的 GUI 应用程序中嵌入 matplotlib。
我需要存储用户绘制并保持打开状态的图形列表,即多个图形可以通过不同的点击绘图按钮分别绘制。
但是,当用户关闭一个图形时,我需要将其从图形列表中删除。
如何判断哪个图形是闭合的?
我正在使用事件处理程序来检测已关闭的图形,但我不知道是哪一个。
这是一些简单的示例代码:
from __future__ import print_function
import matplotlib.pyplot as plt
import numpy as np
figs = []
figNum = len(figs)
def handle_close(evt):
evt.canvas.figure.axes[0].has_been_closed = True
print ('Closed Figure')
fig = plt.figure()
figs.append(fig)
ax = figs[figNum].add_subplot(1, 1, 1)
ax.has_been_closed = False
# fig2 = plt.figure()
# ax2 = fig2.add_axes([0.15, 0.1, 0.7, 0.3])
t = np.arange(0.0, 1.0, 0.01)
s = np.sin(2*np.pi*t)
line, = ax.plot(t, s, color='blue', lw=2)
# fig2 = plt.figure()
# figs.append(fig2)
# fig2.canvas.mpl_connect('close_event', handle_close)
fig.canvas.mpl_connect('close_event', handle_close)
plt.show()
print (ax.has_been_closed)
【问题讨论】:
-
如果您要嵌入,我建议不 使用 pyplot 并自己进行图形状态管理。然后,您可以使用标准的 qt 信号/插槽来处理这类事情。
-
@tcaswell:您是否建议创建一个列表并将数字编号附加到列表中?如果是这样,那么在关闭图形时,如果我自己管理它,我怎么知道要从列表中弹出哪个图形编号或标签?
-
qt窗口关闭信号
标签: python matplotlib