Я пытаюсь использовать функцию события нажатия клавиши для прокрутки графиков данных, которые я сгенерировал. Код должен выполнить простую проверку, чтобы увидеть, является ли текущая позиция допустимым индексом, а затем обновить значение curr_pos при заданном нажатии клавиши.
def test_key():
import matplotlib.pyplot as plt
curr_pos=0
dt = 1
numtimes = 5
def key_event(e):
global curr_pos
if curr_pos - dt <= 0:
if e.key == "right":
curr_pos = curr_pos + dt
else:
return
elif curr_pos + dt >= numtimes:
if e.key == "left":
curr_pos = curr_pos - dt
else:
return
else:
if e.key == "right":
curr_pos = curr_pos + dt
elif e.key == "left":
curr_pos = curr_pos - dt
else:
return
ax.cla()
ax.plot([1,1,1], [1,1,1])
ax.title('time index: '+str(curr_pos))
fig.canvas.draw()
fig = plt.figure()
fig.canvas.mpl_connect('key_press_event', key_event)
ax = fig.add_subplot(111)
ax.plot([1,1,1], [1,1,1])
plt.show()
Код довольно сильно упрощен, очевидно, я не пытаясь построить кучу из них здесь. Я прочитал данные из файла и не хотел иметь дело с этим при загрузке этого вопроса. В любом случае, curr_pos в конечном итоге будет использоваться для выбора индекса данных, которые будут нанесены на график. Это должно воссоздать ошибку, с которой я столкнулся:
Traceback (most recent call last):
File "/home/ckswee/.local/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 216, in process
func(*args, **kwargs)
File "/home/ckswee/Documents/strahl/test_key.py", line 18, in key_event
if curr_pos - dt <= 0:
NameError: name 'curr_pos' is not defined
Нужно ли определять мою переменную curr_pos другим способом, чтобы иметь к ней доступ?