Я сделал нечто подобное, но не смог найти способ наложить изображение на элементы управления (заблокировав любое дальнейшее взаимодействие и c). Самый простой способ, который я нашел, заключался в том, чтобы иметь виджет вывода, предназначенный для индикатора выполнения, и отображать индикатор выполнения, когда выполняются длительные вычисления.
Это лучше всего работает с «повторяющейся» полосой загрузки, например https://i.imgur.com/CS6l6tB.gif, а не тот, который действительно отображает истинный прогресс.
import ipywidgets as widgets
import time
gif_address = 'PATH_TO_YOUR_LOADING_BAR'
with open(gif_address, 'rb') as f:
img = f.read()
# create loading bar widget, ready to display when running long function
loading_bar = widgets.Image(value=img)
def long_running_function():
time.sleep(2)
out = widgets.Output()
display(out)
# make sure your widgets are observing a function which includes these lines:
with out:
display(loading_bar)
long_running_function()
out.clear_output()