Моя цель — написать интерактивную программу просмотра переменных для IPython, т. е. которая позволяет видеть, скажем, вложенные словари/списки в виде дерева и детализировать (немного подобно console.log в Javascript ).
Я потратил много времени, пытаясь извлечь минималистичный код из примера прямого просмотра в 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
из IPython.OutputArea
).. Одной из проблем является container.show()
, который не работает при автономном вызове.
Я теряюсь в нескольких аспектах:
element.append(widget)
, а затем $(widget).append(output)
? Кроме того, почему также необходимо создать файл Ipython.OutputArea
. Разве нет способа просто создать <div id=my_output_area>blah</div>
, а затем обратный вызов output
заполнить его соответствующими данными?output
, но когда я это делаю и console.log()
аргументы передаются обратному вызову, они undefined
или просто бесполезны.Я ценю то, что авторы записной книжки IPython проделали невероятную работу по созданию такого красивого интерфейса -с использованием jQuery/вебсокетов, и что создание документации для разработчиков, позволяющей таким новичкам, как я, настраивать ее, требует многого, но если кто-то может протяни руку, было бы здорово!