我有一個腳本,繪製一些圖像:阻止並繼續在matplotlib
from matplotlib import pyplot as plt
from matplotlib import image as mpimg
(...)
fig = plt.figure()
ax = fig.add_subplot(111)
(...)
for img in images:
imgdata = mpimg.imread(img)
ax.imshow(imgdata)
plt.show(block=True)
不幸的是,這似乎是unpossible阻止GUI和等待用戶輸入與fig.show()
。只需plt.show()
塊...所以我必須使用plt.show
解決方案?
此外,我正在聽的用戶事件是這樣的:
cid = fig.canvas.mpl_connect('key_press_event', on_key_press)
def on_key_press(event):
if event.key == "n":
ax.cla()
plt.show(block=False)
我的目的是聽「N」(如「下一步」),然後用for循環繼續,因此加載下一個圖像數據並繪製它,再等等等待用戶輸入...
然而,第二個電話show()
(plt.show(block=False)
)更新圖像(所以ax
數據被清除),但鎖不釋放 - 在對循環不會繼續。我怎麼能實現這種行爲?
編輯:我需要event.xdata
,event.ydata
,event.x
,event.y
的matplotlib
值,因此實施「黑客」的東西,如input()
因此讓蟒蛇等待用戶輸入在控制檯(使用matplotlib與block=False
每時間)不會解決我的問題。
http://matplotlib.org/examples/pylab_examples/ginput_demo.html – tacaswell
感謝您的評論。其實我使用'ginput'作爲鼠標座標,但我也需要關鍵聽衆。我想爲基本操作創建快捷鍵,如增加/減少亮度,保存圖像,加載下一張圖像,... – daniel451