Я использую следующий код:
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.
Есть ли способ изменить размер текстового поля и отформатировать другие атрибуты виджета?






Существенным моментом является то, что вы можете передавать определенные виджеты в вызовы 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_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);
Начало этого сложного примера, который я написал в ответ на другой вопрос, также может помочь в дальнейшей иллюстрации этого.
@Wayne Спасибо за ответ, но что произойдет, если моя функция имеет другой аргумент, который является логическим, который генерирует поле переключения, как мне установить форматирование для поля переключения? где вы нашли документацию/руководство, чтобы понять, как форматировать текстовое поле?
«Где вы нашли документацию/руководство, чтобы понять, как форматировать текстовое поле?» Это там. На странице «Использование Interact» много наглядных примеров. Пара, особенно актуальная для вашего вопроса, в настоящее время находится в разделе «interact_manual», где есть пример для interact_manual() из: interact_manual(slow_function,i=FloatSlider(min=1e5, max=1e7, step=1e5));. А еще под ним есть пример interactive(), который похож, но отличается, и который показывает передачу в конкретном виджете.
В конце я добавил «Дополнение», отвечающее на ваш вопрос: «Что произойдет, если у моей функции есть другой аргумент, который является логическим, который генерирует поле переключения, как мне установить форматирование для поля переключения?» Я также добавил в пример кода, как изменить метку «Запустить Interact» на кнопке, созданной interact_manual().
Поддерживаю это. И браво за четкий ответ, смог повторить.