Я пытаюсь получить пользовательский ввод через input()
, после того, как пользователь манипулирует графиком, используя стандартные элементы управления масштабированием. Например. Пользователь играет с графиком, вычисляет желаемое значение X и вводит его в командной строке.
График может быть в отдельном окне (Spyder / Python) или в строке (в блокноте Юпитера).
После того, как пользователь вводит значение, сценарий продолжается (например, запрашивает другое значение из графика или выполняет некоторые вычисления со значениями).
Однако я не могу заставить график отображаться и реагировать, пока командная строка ожидает ввода данных пользователем. Я пробовал:
plot()
оператор первый, input()
оператор второй.
- Spyder с Python 3.6 (я думаю), от источника через MacPorts (обновил Spyder, насколько я мог)
- Spyder через Python 3.7 из пакета Anaconda ContinuumIO, в IPython
- Блокнот Юпитера также от Анаконды
- Многочисленные бэкэнды: macosx, qt и т. Д.
- Блокнот
%matplotlib
, notebook
, inline
, qt
и т. Д.
- отдельные окна рисунков (Spyder & Python) и рядные фигуры (Jupyter Notebook)
fig.show( block=False )
и варианты этого, например. plt.show( block=False )
- два разных MacBook (2017 и 2010 MacBook Pro)
Я получил фактическое обновление графика (ранее это было либо пустое место в блокноте, либо пустое отдельное окно с рисунком), добавив matplotlib.pyplot.pause(0.5)
между plot()
и input()
заявления. Это был серьезный прогресс, но как только сценарий попадет в оператор input()
, я получаю вращающийся шарик в окне рисунка (предотвращение масштабирования и т. Д.), Пока не выполню оператор input()
, введя что-то, а затем сценарий завершится. В этот момент сюжет является интерактивным.
Кажется, консоль (и) Python не может обрабатывать более одного взаимодействия с пользователем одновременно? То есть. input()
замораживает всю другую интерактивность пользователя?
Я искал SO, google и т. Д. Уже несколько дней и не понял этого! Идея состояла в том, чтобы использовать это как «быстрый и грязный» способ получения пользовательского ввода с графика, прежде чем выполнять теоретически более сложную задачу получения пользовательских кликов непосредственно с графика (который должен был бы привязываться к отображаемым данным, таким как данные). курсоры).