我正在一个接一个地绘制一些数字(关闭窗口,看下一个),但我需要一种方法来中断循环并通过按键完成脚本(" Esc"例如)。
我尝试使用mscrt.getch(),但是没有用,任何建议都会受到赞赏。
核心周期是这样的:
for i, _ in enumerate(ID_SECTION):
FIG = plt.figure(
num=ID_SECTION[i],
figsize=(10, 7.5),
facecolor='w'
)
curve = FIG.add_subplot(
1, 2, 1,
adjustable='box',
aspect='equal'
)
curve.scatter(x, y)
plt.show()
plt.close('all')
答案 0 :(得分:0)
如果您不介意按“输入”每个循环告诉循环继续,您可以在循环结束时添加这样的内容:
r = input("Continue [y]/n?")
if r == 'n':
break
否则,我认为你必须在你的数字中添加keypress callback。从这个例子开始,这样的事情可能有用:
from __future__ import print_function
import numpy as np
import matplotlib.pyplot as plt
run = True
def press(event):
global run
if event.key == 'escape':
run = False
然后将其添加到循环中:
FIG.canvas.mpl_connect('key_press_event', press)
if not run:
break
尽管如此,我不确定在创建数字的循环中添加回调是个好主意。最好创建一个数字并将回调添加到该数字,然后添加暂停或其他内容,以便您可以看到数字创建每个循环的内容。但是,如果你要这样做,那么第一个input
解决方案可能会更好。
另请注意,我在后一个解决方案generally frowned upon中使用了global
。