Сценарий:
Пользователь нажимает на ссылку в блокнот (например, «Справочник по расписанию»).
Это должно отправить событие пользовательскому плагину JupyterLab, который затем откроет связанный документ в разделенном/параллельном представлении в интерфейсе JupyterLab.
Вот код Python, который я использую в блокноте для запуска события:
Код: Выделить всё
from ipykernel.comm import Comm
from IPython import get_ipython
# Registering the comm target
def comm_target(comm, open_msg):
@comm.on_msg
def _recv(msg):
print("Message received:", msg)
get_ipython().kernel.comm_manager.register_target('schedule_reference_link', comm_target)
# Creating a Comm object
comm = Comm(target_name='schedule_reference_link')
# Function to handle button click
def on_schedule_reference_clicked(b):
print('Clicked')
comm.send(data={'event': 'schedule_ref_event', 'data': 'https://example.com'})
schedule_reference = Button(description="Schedule Reference")
schedule_reference.on_click(on_schedule_reference_clicked)
Код: Выделить всё
const kernel = app.serviceManager.sessions.running().next().value.kernel;
const comm = kernel.createComm('schedule_reference_link');
comm.onMsg = (msg: { content: { data: any; }; }) => {
const eventData = msg.content.data;
if (eventData.event === 'schedule_ref_event') {
console.log('Event received:', eventData.data); // supposed to capture event data from ipynb
}
};
Хотя функция comm.send(), похоже, успешно выполняется на стороне Python, я не могу зафиксировать какое-либо событие в своем специальном плагине JupyterLab. .
Никакие данные о событиях не регистрируются и не принимаются в обработчике onMsg в плагине JupyterLab.
И мой вопрос:
- Как правильно захватить и обработать событие, отправленное из блокнота .ipynb в моем плагине JupyterLab, чтобы инициировать открытие связанного документа в разделенном/параллельном представлении?
< li>Я что-то упустил в настройке связи между стороной Python и плагином JupyterLab?
Подробнее здесь: https://stackoverflow.com/questions/790 ... ew-in-jupy
Мобильная версия