Jupyter (блокнот ipython), скрыть меню и некоторые кнопки панели инструментов или запустить код python при загрузке

Я хотел бы использовать блокнот Jupyter для администрирования тестов по математике для своих учеников старших классов на своих ipads, я бы запустил сервер для каждого учащегося и попросил их подключиться к этому собственному серверу на этих ipads, где они найдут свой собственный тест на блокнот. Я написал тест с использованием виджетов, и он отлично работает, но я хотел бы убедиться, что они не смогут ничего сделать с этим ноутбуком, кроме как пройти тест. У меня есть две идеи, которые я не смог заставить работать.

Идея 1: скрыть строку меню и все кнопки от панели инструментов и добавить одну кнопку, которая будет запускать единственную ячейку в книге, которая будет иметь "%run exam.py", которая запускает тест. С этой настройкой ученик не мог делать дополнительное кодирование, потому что на ipad они не могли использовать Shift+Enter, чтобы начать новую ячейку.

Моя проблема в том, что я не смог найти способ скрыть строку меню или скрыть определенные кнопки на панели инструментов.

Идея 2: В custom.js я заметил, что вы можете запускать код на Python с помощью "IPython.notebook.kernel.execute(" code here ")". Поэтому я надеялся, что при загрузке ноутбука файл custom.js скроет заголовок, а затем автоматически выполнит мой экзаменационный код.

Кажется, я не могу заставить работать любой код ipython во время загрузки, я даже не знаю, возможно ли это?

Я не знаю javascript, поэтому мои попытки провалились с примерами в custom.js безрезультатно.

Возможна ли идея, и / или есть ли лучший способ использовать ноутбук для проведения экзамена?

1 ответ

Решение

1) Вы, вероятно, хотите прочитать о массовом развертывании IPython для студентов.

2) Если вы не используете записную книжку IPython для запуска кода, то вы, вероятно, изгибаете инструмент за пределы его использования, и приложение Flask может подойти лучше.

3) Вам нужно обернуть вызов для выполнения кода, который будет выполняться только после запуска ядра. Если вы контролируете сервер, почему бы не положить вещи в .ipython/profile_default/startup? В противном случае используйте следующее (может зависеть от конкретной используемой версии):

require(['base/js/events','base/js/namespace'], function(events, IPython){
    events.on('kernel_ready.Kernel', function () {
        // your code here
    })
});

Но в целом кажется, что вы не используете инструменты.

Другие вопросы по тегам