У меня есть сценарий, который некоторые участки Земельные участки изображения:Блокировка и продолжается в 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)
Мое намерение состоит в том, чтобы слушать «п» (например, «рядом»), а затем продолжить для цикла, следовательно, загрузить следующую информацию изображения и построение его снова и так далее в ожидании ввода пользователя ...
Однако второй вызов show()
(plt.show(block=False)
) обновляет изображение (так что данные ax
очищается), но блокировка не снимается - для цикл не продолжается. Как я мог добиться такого поведения?
EDIT: мне нужны 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