Обработка .ipynb Щелкните событие, чтобы открыть связанный документ в параллельном представлении в JupyterLabPython

Программы на Python
Ответить
Anonymous
 Обработка .ipynb Щелкните событие, чтобы открыть связанный документ в параллельном представлении в JupyterLab

Сообщение Anonymous »

Я пытаюсь реализовать функциональность, при которой ссылка в блокноте .ipynb запускает событие и открывает связанный документ в разделенном/параллельном представлении в JupyterLab. В частности, я использую специальный плагин для прослушивания и обработки событий кликов по любым ссылкам.
Сценарий:
Пользователь нажимает на ссылку в блокнот (например, «Справочник по расписанию»).
Это должно отправить событие пользовательскому плагину 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)

На стороне плагина JupyterLab я использую следующий код для прослушивания события:

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»