Как сделать перемещение окна программы за кастомную рамку?
Забыл про свой вопрос на время после того как в тот же день придумал простое и не очень(наверное) умное решение
Оставлю код, вдруг кто будет искать решение данной проблемы и наткнется)

# вызывается при нажатии кнопки мыши по форме
    def mousePressEvent(self, event):
        # Если нажата левая кнопка мыши
        if event.button() == QtCore.Qt.LeftButton:
            # получаем координаты окна относительно экрана
            x_main = main.geometry().x()
            y_main = main.geometry().y()
            # получаем координаты курсора относительно окна нашей программы
            cursor_x = QtGui.QCursor.pos().x()
            cursor_y = QtGui.QCursor.pos().y()
            # проверяем условием позицию курсора на нужной области программы(у нас это верхний бар) 
            # если всё ок - перемещаем
            # иначе игнорируем
            if x_main <= cursor_x <= x_main + main.geometry().width():
                if y_main <= cursor_y <= y_main + main.widget_2.geometry().height():
                    self.old_pos = event.pos()
                else:
                    self.old_pos = None
        elif event.button() == QtCore.Qt.RightButton:
            self.old_pos = None

    # вызывается при отпускании кнопки мыши
    def mouseReleaseEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton:
            self.old_pos = None

    # вызывается всякий раз, когда мышь перемещается
    def mouseMoveEvent(self, event):
        if not self.old_pos:
            return
        delta = event.pos() - self.old_pos
        self.move(self.pos() + delta)

Нажми "Нравится" если тебе помогло)
Забыл про свой вопрос на время после того как в тот же день придумал простое и не очень(наверное) умное решение
Оставлю код, вдруг кто будет искать решение данной проблемы и наткнется)

# вызывается при нажатии кнопки мыши по форме
    def mousePressEvent(self, event):
        # Если нажата левая кнопка мыши
        if event.button() == QtCore.Qt.LeftButton:
            # получаем координаты окна относительно экрана
            x_main = main.geometry().x()
            y_main = main.geometry().y()
            # получаем координаты курсора относительно окна нашей программы
            cursor_x = QtGui.QCursor.pos().x()
            cursor_y = QtGui.QCursor.pos().y()
            # проверяем условием позицию курсора на нужной области программы(у нас это верхний бар) 
            # если всё ок - перемещаем
            # иначе игнорируем
            if x_main <= cursor_x <= x_main + main.geometry().width():
                if y_main <= cursor_y <= y_main + main.widget_2.geometry().height():
                    self.old_pos = event.pos()
                else:
                    self.old_pos = None
        elif event.button() == QtCore.Qt.RightButton:
            self.old_pos = None

    # вызывается при отпускании кнопки мыши
    def mouseReleaseEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton:
            self.old_pos = None

    # вызывается всякий раз, когда мышь перемещается
    def mouseMoveEvent(self, event):
        if not self.old_pos:
            return
        delta = event.pos() - self.old_pos
        self.move(self.pos() + delta)

Нажми "Нравится" если тебе помогло)