Форматирование виджетов Jupyter

Я использую следующий код:

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets

def f(x):
    return x

interact_manual(f, x='Hi there!');

В блокноте появляется следующий виджет:

Проблема в том, что текстовое поле имеет фиксированный размер по умолчанию, который очень мал. Я хотел бы увеличить размер текстового поля, чтобы текст пользователя не обрезался. Я также хотел бы изменить текст, отображаемый на кнопке, со стандартного «Запустить взаимодействие» на что-то собственное.

Я тщательно просмотрел документацию и поискал в Интернете, но не смог найти ни одного примера кода, показывающего, как можно установить какое-либо форматирование для функции взаимодействия/interact_manual.

Есть ли способ изменить размер текстового поля и отформатировать другие атрибуты виджета?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
230
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Основы: передайте виджет, чтобы указать параметры.

Существенным моментом является то, что вы можете передавать определенные виджеты в вызовы Interactive, Interact и Interact_manual. Тогда благодаря этому вы сможете контролировать ширину текстового поля, как я это делаю здесь.

Вот пример для interact():

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets

text_input = widgets.Text(
        value = "",
        description = "Enter text here:",
        style = {"description_width": "initial"},
        layout=widgets.Layout(width='70%'), 
    )

def f(x):
    return x

interact(f, x=text_input);

Это работает и с interact_manual():

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets

text_input = widgets.Text(
        value = "",
        description = "Enter text here:",
        style = {"description_width": "initial"},
        layout=widgets.Layout(width='70%'), 
    )

def f(x):
    return x

interact_manual(f, x=text_input);

Это описано на странице «Использование Interact», где приведено множество наглядных примеров. Пара, особенно подходящая для ОП, в настоящее время находится в разделе «interact_manual», где есть пример для interact_manual() из: interact_manual(slow_function,i=FloatSlider(min=1e5, max=1e7, step=1e5));. А под ним есть похожий, но отличный пример interactive(), который показывает передачу в конкретном виджете: slow = interactive(slow_function, {'manual': True}, i=widgets.FloatSlider(min=1e4, max=1e6, step=1e4)).


Решение проблемы настройки текста «Запустить Interact» на кнопке interact_manual().

ОП также сказал:

«Я также хотел бы изменить текст, отображаемый на кнопке, со стандартного «Запустить Interact» на что-то собственное».

Для этого здесь сначала назначает пользовательские manual_name параметрам экземпляра interact_manual(), а затем использует их для встраивания других виджетов.

Вот этот подход в сочетании с последним примером блока кода выше:

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets

text_input = widgets.Text(
        value = "",
        description = "Enter text here:",
        style = {"description_width": "initial"},
        layout=widgets.Layout(width='70%'), 
    )

def f(x):
    return x

my_customized_interact_manual = interact_manual.options(manual_name = "Click here to proceed")
my_customized_interact_manual(f, x=text_input);

Приложение: Как передать несколько виджетов

Этот вопрос был задан в ответ в комментариях:

«...что произойдет, если у моей функции есть другой аргумент, являющийся логическим значением, который генерирует поле переключения, как мне установить форматирование для поля переключения?»

Вы должны объединить дополнительные виджеты с нужными настройками, разместить их в функции и ссылаться на них при вызове interact().

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets

text_input = widgets.Text(
        value = "",
        description = "Enter text here:",
        style = {"description_width": "initial"},
        layout=widgets.Layout(width='70%'), 
    )
checkbox_input = widgets.Checkbox(
        value=True, 
        description='Toggle True/False', 
        disabled=False, 
        indent=False)
# Checkbox options adapted from https://stackoverflow.com/q/75434840/8508004

def f(x, y):
    return x, y

interact(f, x=text_input, y=checkbox_input);

Начало этого сложного примера, который я написал в ответ на другой вопрос, также может помочь в дальнейшей иллюстрации этого.

Поддерживаю это. И браво за четкий ответ, смог повторить.

Kenada Ora 26.02.2024 06:04

@Wayne Спасибо за ответ, но что произойдет, если моя функция имеет другой аргумент, который является логическим, который генерирует поле переключения, как мне установить форматирование для поля переключения? где вы нашли документацию/руководство, чтобы понять, как форматировать текстовое поле?

Mustard Tiger 26.02.2024 07:55

«Где вы нашли документацию/руководство, чтобы понять, как форматировать текстовое поле?» Это там. На странице «Использование Interact» много наглядных примеров. Пара, особенно актуальная для вашего вопроса, в настоящее время находится в разделе «interact_manual», где есть пример для interact_manual() из: interact_manual(slow_function,i=FloatSlider(min=1e5, max=1e7, step=1e5));. А еще под ним есть пример interactive(), который похож, но отличается, и который показывает передачу в конкретном виджете.

Wayne 26.02.2024 17:11

В конце я добавил «Дополнение», отвечающее на ваш вопрос: «Что произойдет, если у моей функции есть другой аргумент, который является логическим, который генерирует поле переключения, как мне установить форматирование для поля переключения?» Я также добавил в пример кода, как изменить метку «Запустить Interact» на кнопке, созданной interact_manual().

Wayne 26.02.2024 19:49

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