python – Como puedo desordenar una figura

codigo1

def mostrarImagen2(imagenPath, orden):
    #llamar a dividir y mostrar segun matriz orden
    lados = len(orden(0))
    imagenDividida = dividir_imagen2(imagenPath, lados)
    img = Image.open(imagenPath, 'r')
    imgBox = img.getbbox()
    width = imgBox(2)
    height = imgBox(3)
    ladoW = width//lados
    ladoH = height//lados
    imgMixed = Image.new('RGB', (width, height), color = 'white')
    for c in range(lados):
        for r in range(lados):
            if orden(c)(r) != '-':
                imgMixed.paste(imagenDividida(orden(c)(r) - 1), (r*ladoW, c*ladoH))    
    return imgMixed

codigo2

import random
def generar_movidas_aleatorias(tablero, cantidad_movidas, posicion_inicial):
pos_x = random.randrange(0,2)
pos_y = random.randrange(0,2)
a_mover = pos_x, pos_y
#print("a_mover", a_mover)
while cantidad_movidas > 0:
    v_mover = mover(posicion_inicial,a_mover)
    posmov_x, posmov_y = v_mover
    
    aux = tablero_random(posmov_x)(posmov_y)

    tablero_random(posmov_x)(posmov_y) = tablero_random(pos_x)(pos_y)
    posmov_x, posmov_y = a_mover
    tablero_random(pos_x)(pos_y) = aux
   
    #print("aux", aux)
    #print("pos_x, pos_y", pos_x, pos_y)
    
    #print("nueva_tabla", tablero_random)
    cantidad_movidas -= 1
    pos_x2 = random.randrange(0,4)
    pos_y3 = random.randrange(0,4)
    posicion_inicial = pos_x2, pos_y3
contador = 0
tam = len(tablero_random)
while contador < tam:
    #print(tablero_random(contador))
    contador += 1
return (tablero_random)

codigo3

import ipywidgets as widgets

boton_desordenar = widgets.Button(description='desordenar',
                             tooltip= "Desordena la figura")

figura, posicion = generar_figura_ordenada()   
def desordenar(button):
global posicion, figura
aleatorio = random.randrange(1, 60)
tablero_desordenado = generar_movidas_aleatorias(figura, aleatorio, posicion)



#imprimir bonito

contador = 0
while contador < len(tablero_desordenado):
    print(print("{:>4}".format(tablero_desordenado(contador)(0)), "{:>4}".format(tablero_desordenado(contador)(1)), "{:>4}".format(tablero_desordenado(contador)(2)),"{:>4}".format(tablero_desordenado(contador)(3))))
    contador += 1
output = widgets.Output()
display(boton_desordenar, output)
boton_desordenar.on_click(desordenar)

El problemas es quel codigo de arriba me retorna una imagen con un espacio en blaco y tengo que deordenar la imagen cuando se toca el boton desordenar del codigo3
introducir la descripción de la imagen aquí

esa es la imagen que me da el codigo1, tengo que desordenarla y ademas tengo que poner 4 botones los cuales se movera el espacio en blanco, para ordenar la imagen una vez desosrdenada.
No logro desordenar la imagen y acoplar los botones para moverla