Как записать нажатие клавиш в Jupyter Notebook на MacOS с помощью curses stdscr.getch ()? - PullRequest
0 голосов
/ 25 февраля 2020

Я использую Jupyter Notebook с Python 3.7 на MacOS

Я собрал много данных, и теперь я хочу отобразить их по одному за раз и циклически перемещаться по графикам, используя для l oop. Однако я хочу сделать паузу для просмотра каждого графика и нажать любую клавишу, чтобы перейти к следующему.

Я попытался ввести («Нажмите ENTER, чтобы продолжить ...»), но он создает новую строку после каждого графика и заставляет всю ячейку Jupyter прокручиваться вверх каждый раз, когда я нажимаю клавишу Enter, потому что она создает новую строку для каждого ввода.

Поэтому я пытаюсь использовать библиотеку curses stdscr.getch () для захвата ввода с клавиатуры - однако он не обнаруживает нажатий клавиш клавиатуры.

import curses

%matplotlib notebook
fig,ax = plt.subplots(figsize=(10, 8))
ch = 1

for col in df.columns:
    if int(col) % 2 == 0: # even columns are time
        xs = df[col] 
    else: # odd columns are voltage
        if ch == 2:
            ys = df[col]
            ax.plot(xs, ys, 'b')
            ax.set_xlabel('X') ; ax.set_ylabel('Y')
            ax.set_xlim(-30,260) ; ax.set_ylim(-10000,10000)
            fig.canvas.draw()
            #input('Press ENTER to continue...')

            stdscr = curses.initscr()
            stdscr.keypad(True)

            while True:
                key = stdscr.getch()
                if key != -1:
                    print(key)
                if key == 27: # This is the escape key code
                    curses.endwin()
                    break
            ax.cla()
            ch = 1
        else:
            ch = 2

Однако, в то время как True l oop, ключ всегда равен -1. Независимо от того, какую клавишу я нажимаю, она всегда равна -1, что означает, что она вообще не обнаруживает нажатий клавиш. Что мне не хватает? Как использовать stdscr.getch () для обнаружения нажатия клавиш в Jupyter Notebook на MacOS?

Спасибо!

...