Вопрос или проблема
Нажмите кнопку, чтобы перейти по 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)
Пояснение кода:
- Импорт библиотек: Импортируем
ipywidgets
для создания кнопок иJavascript
изIPython.display
для выполнения JavaScript-кода. - Создание Output: Используем
widgets.Output()
для того, чтобы управлять выводом JavaScript-кода. Это необходимо, так как без этого кода обработка не сработала бы корректно. - Функция open_url: Эта функция используется как обратный вызов для кнопки. Она выполняет JavaScript-код для смены адреса страницы.
- Создание кнопки: Кнопка создается с описанием и встроенным URL в качестве tooltip.
- Привязка события: Используем метод
on_click
для связывания нажатия кнопки с функциейopen_url
. - Отображение: Сначала отображаем кнопку, а затем вывод через Output.
Этот код позволит вам открывать заданный URL в той же вкладке при нажатии на кнопку в Jupyter Notebook.