我有一个应用程序,我从python shell运行。我有一个主要人物
fig, (plt1, plt2, plt3) = pl.subplots(3, 1)
我有以下功能:
def do_select_features(self, line):
global mode, fig
mode = 'features'
fig.canvas.mpl_connect('key_press_event', on_key)
plot_wnd()
pl.ion()
pl.show()
def plot_wnd():
plt1.cla()
plt2.cla()
plt3.cla()
plt1.grid(True)
plt2.grid(True)
plt3.grid(True)
plt1.hold(True)
plt1.plot(rdata)
plt1.plot([rng_current[0], rng_current[0]], [min(rdata), max(rdata)], 'r', lw=1)
plt1.plot([rng_current[1], rng_current[1]], [min(rdata), max(rdata)], 'r', lw=1)
zdata = compression.fill_in(compression.zigzag(normalize(rdata), zigzag))
plt2.plot(zdata[rng_current[0]:rng_current[1]], color='r')
plt2.plot(normalize(rdata)[rng_current[0]:rng_current[1]], color='b')
plt3.plot(diff(zdata, normalize(rdata))[rng_current[0]:rng_current[1]], color='r')
pl.draw()
def on_key(event):
global rng_current
if event.key == 'right' and (rng_current[1] + stp) < len(rdata):
rng_current[0] += stp
rng_current[1] += stp
plot_wnd()
if event.key == 'enter':
f = h5py.File(db, "a")
pdo.insert_group(f, mode, compression.zigzag(normalize(rdata[rng_current[0]:rng_current[1]]), zigzag))
f.close
print "Subseries added to ", mode, " database"
if event.key == 'left' and (rng_current[0] - stp) > 0:
rng_current[0] -= stp
rng_current[1] -= + stp
plot_wnd()
if event.key == 'escape':
pl.close()
因此,当我在命令行中时,我调用select_features,它会拉出数字,一切都很好。然后我用鼠标手动退出窗口或按ESC键(触发pl.close()。然后我想再次调用select_features,但它总是会显示一个全灰色的类似窗口。如何修复此问题?
答案 0 :(得分:1)
尝试在功能中移动fig
创建。关闭窗口时,会破坏图形,因此稍后对该函数的调用将无法再访问该图形。每次创建新窗口时都需要重新创建一个新图形。