PySide Qt: crecimiento vertical automático para TextEdit Widget y espacio entre los widgets en un diseño vertical

Necesito resolver dos problemas con mi widget de arriba.

Me gustaría poder definir la cantidad de espacio puesto entre los widgets de publicación que se muestran en la imagen (se ven bien como están, pero quiero saber que está hecho).Me gustaría aumentar las ediciones de texto verticalmente en función de la cantidad de texto que contienen sin aumentar horizontalmente.

Para 1 el código que llena los widgets es el siguiente:

self._body_frame = QWidget()
self._body_frame.setMinimumWidth(750)
self._body_layout = QVBoxLayout()
self._body_layout.setSpacing(0)
self._post_widgets = []
for i in range(self._posts_per_page):
    pw = PostWidget()
    self._post_widgets.append(pw)
    self._body_layout.addWidget(pw)

    self._body_frame.setLayout(self._body_layout)

SetSpacing (0) no acerca las cosas, sin embargo, SetSpacing (100) lo aumenta.

editar

(para la pregunta 2) No he mencionado esto, pero quiero que el widget principal tenga una barra de desplazamiento vertical.

He respondido a mi propia pregunta, pero está basada en palabras y causa y efecto. Una respuesta de estilo de tutorial bien escrita para abordar ambos puntos obtiene la recompensa: D

editar 2

Usando mi propia respuesta a continuación he resuelto el problema. Aceptaré mi propia respuesta ahora.

Respuestas a la pregunta(2)

Su respuesta a la pregunta