Barra de título personalizada con marco en PyQt5

Estoy trabajando en una aplicación de toma de notas mínima compatible con Markdown de código abierto para Windows / Linux. Estoy tratando de eliminar la barra de título y agregar mis propios botones. Quiero algo como, una barra de título con solo dos botones personalizados como se muestra en la figura

Actualmente tengo esto:

He intentado modificar las banderas de la ventana:

Sin banderas de ventana, la ventana es redimensionable y móvil. Pero no hay botones personalizados.Utilizandoself.setWindowFlags(QtCore.Qt.FramelessWindowHint), la ventana no tiene bordes, pero no puede mover o cambiar el tamaño de la ventanaUtilizandoself.setWindowFlags(QtCore.Qt.CustomizeWindowHint), la ventana es redimensionable pero no puede moverse y tampoco puede deshacerse de la parte blanca en la parte superior de la ventana.

Cualquier ayuda apreciada. Puedes encontrar el proyecto en GitHubaquí.

Gracias..

Este es mi código de Python:

from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets, uic
import sys
import os
import markdown2 # https://github.com/trentm/python-markdown2
from PyQt5.QtCore import QRect
from PyQt5.QtGui import QFont

simpleUiForm = uic.loadUiType("Simple.ui")[0]

class SimpleWindow(QtWidgets.QMainWindow, simpleUiForm):
    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.markdown = markdown2.Markdown()
        self.css = open(os.path.join("css", "default.css")).read()
        self.editNote.setPlainText("")
        #self.noteView = QtWebEngineWidgets.QWebEngineView(self)
        self.installEventFilter(self)
        self.displayNote.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
        #self.setWindowFlags(QtCore.Qt.FramelessWindowHint)

    def eventFilter(self, object, event):
        if event.type() == QtCore.QEvent.WindowActivate:
            print("widget window has gained focus")
            self.editNote.show()
            self.displayNote.hide()
        elif event.type() == QtCore.QEvent.WindowDeactivate:
            print("widget window has lost focus")
            note = self.editNote.toPlainText()
            htmlNote = self.getStyledPage(note)
            # print(note)
            self.editNote.hide()
            self.displayNote.show()
            # print(htmlNote)
            self.displayNote.setHtml(htmlNote)
        elif event.type() == QtCore.QEvent.FocusIn:
            print("widget has gained keyboard focus")
        elif event.type() == QtCore.QEvent.FocusOut:
            print("widget has lost keyboard focus")
        return False

El archivo UI se crea en la siguiente jerarquía

Respuestas a la pregunta(1)

Su respuesta a la pregunta