Моя цель - написать интерактивный просмотрщик переменных для IPython, то есть который позволяет видеть, скажем, вложенные dicts/lists в виде дерева и развернуть (немного похоже на console.log в Javascript).
Я потратил много времени на извлечение минималистического кода из примера directview в IPython, но до сих пор не могу понять, как все это работает. Мой Python нормально, но мой опыт jQuery довольно ограничен.
Итак, мне пришлось отключить directview.js до следующего
container.show();
var widget = $('<div/>')
element.append(widget);
var output = $('<div></div>');
$(widget).append(output)
var output_area = new IPython.OutputArea(output, false);
var callbacks = { 'output': $.proxy(output_area.handle_output, output_area) };
var code = 'print 1+1'
var msg_id = IPython.notebook.kernel.execute(code, callbacks, {silent: false});
Это работает, когда я загружаю directview.ipynb. Однако я до сих пор не понимаю, как сделать его полностью автономным (т.е. Не требует directview.py и передать другой обратный вызов, чем стандартный handle_output
of IPython.OutputArea
). Одна из проблем - это container.show()
, которая терпит неудачу при вызове автономным способом.
Я теряюсь по нескольким аспектам:
- Почему существует
element.append(widget)
, а затем$(widget).append(output)
? Также возникает необходимость создатьIPython.OutputArea
. Разве нет способа просто создать<div id=my_output_area>blah</div>
, а затем выполнить обратный вызовoutput
с соответствующими данными? - О чем вся эта вещь .proxy? Я хотел бы создать свой собственный обратный вызов для
output
, но когда я это сделаю иconsole.log()
аргументы, переданные обратному вызову, ониundefined
или просто бесполезны.
Я ценю, что авторы ноутбука IPython сделали невероятную работу, создав такой красивый интерфейс, используя jQuery/websockets, и что создание документации разработчика, которая позволяет новичкам, как и мне, настраивать их, очень много, но если кто-то может протянуть руку, которая будет здорово!