Нажмите кнопку, чтобы перейти по URL в ноутбуке Jupyter

Вопрос или проблема

Нажмите кнопку, чтобы перейти по URL в ноутбуке Jupyter

Я хочу иметь возможность открыть http://example.com при нажатии на ipywidgets.Button (желательно в той же вкладке).

Я пробовал

def on_click(btn):
  display(Javascript('window.open("http://example.com");'))

и

def on_click(btn):
  display(Javascript('window.location.href = "http://example.com";'))

в качестве обратных вызовов on_click, но ничего не происходит, когда я нажимаю кнопку.

Это связано с тем, что блокнот не знает, где отображать объект Javascript, поэтому вместо этого он записывает его в консоль, чтобы сообщить вам, что что-то не так. Одно из решений — указать ваш вывод на конкретный Output:

display, Javascript

out = widgets.Output()


def window_open_button(url):
    with out:
        display(Javascript(f'window.open("{url.tooltip}");'))


ss = widgets.Button(description="привет",
tooltip='https://www.google.com') ss.on_click(window_open_button)

with out:
    display(ss) out 

Источник

Ответ или решение

Чтобы создать кнопку в Jupyter Notebook, которая будет открывать URL при нажатии, вам нужно использовать библиотеку ipywidgets для создания интерфейса, а также выполнить JavaScript для изменения URL. Ниже приведен полный пример, как это сделать, включая использование widgets.Output для корректного отображения JavaScript-кода.

import ipywidgets as widgets
from IPython.display import display, Javascript

# Создаем объект Output для вывода
out = widgets.Output()

# Функция, которая будет вызываться при нажатии кнопки
def open_url(btn):
    with out:
        # Вставляем JavaScript в вывод, который перенаправит на нужный URL
        display(Javascript(f'window.location.href="{btn.tooltip}";'))

# Создаем кнопку с описанием и URL в качестве подсказки (tooltip)
button = widgets.Button(description="Перейти на_example.com", tooltip='http://example.com')

# Привязываем функцию open_url к событию нажатия на кнопку
button.on_click(open_url)

# Отображаем кнопку и вывод
display(button, out)

Пояснение кода:

  1. Импорт библиотек: Импортируем ipywidgets для создания кнопок и Javascript из IPython.display для выполнения JavaScript-кода.
  2. Создание Output: Используем widgets.Output() для того, чтобы управлять выводом JavaScript-кода. Это необходимо, так как без этого кода обработка не сработала бы корректно.
  3. Функция open_url: Эта функция используется как обратный вызов для кнопки. Она выполняет JavaScript-код для смены адреса страницы.
  4. Создание кнопки: Кнопка создается с описанием и встроенным URL в качестве tooltip.
  5. Привязка события: Используем метод on_click для связывания нажатия кнопки с функцией open_url.
  6. Отображение: Сначала отображаем кнопку, а затем вывод через Output.

Этот код позволит вам открывать заданный URL в той же вкладке при нажатии на кнопку в Jupyter Notebook.

Оцените материал
Добавить комментарий

Капча загружается...