Не работает setGraphicsEffect в PyQt5

Создаю программу с кастомным окном. Cоздал свой собственный тайтл бар и кнопки и удалил при этом стандартный от windows.

Теперь я хочу добавить к своей программе тень вокруг всего окна. Насколько я понял, делается это с помощью setGraphicsEffect. Однако, почему-то у меня не работает, при этом ошибок не выдаёт, просто не работает, не могу понять в чём проблема.

Прилагаю снимок экрана, с тем как я хочу, и что у меня в данный момент.

Так же внизу прилагаю код реализации: ui_main.py, ui_functions.py, main.py.

Вот картинка с тем как я хочу, чтобы было и то, что у меня сейчас

Код ui_main.py

### ФАЙЛ: ui_main.py

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QColor
from PyQt5.QtWidgets import QGraphicsDropShadowEffect

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(877, 617)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        font = QtGui.QFont()
        font.setFamily("Open Sans")
        font.setPointSize(10)
        self.centralwidget.setFont(font)
        self.centralwidget.setObjectName("centralwidget")
        self.main_frame_layout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.main_frame_layout.setContentsMargins(0, 0, 0, 0)
        self.main_frame_layout.setSpacing(0)
        self.main_frame_layout.setObjectName("main_frame_layout")
        self.main_frame = QtWidgets.QFrame(self.centralwidget)
        self.main_frame.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.main_frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.main_frame.setObjectName("main_frame")
        self.main_frame_inside_layot = QtWidgets.QVBoxLayout(self.main_frame)
        self.main_frame_inside_layot.setContentsMargins(0, 0, 0, 0)
        self.main_frame_inside_layot.setSpacing(0)
        self.main_frame_inside_layot.setObjectName("main_frame_inside_layot")
    
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label_title_text.setText(_translate("MainWindow", "Obrab Notes"))
        self.btn_file.setText(_translate("MainWindow", "File"))
        self.btn_settings.setText(_translate("MainWindow", "Settings"))
        self.btn_add.setText(_translate("MainWindow", "Add"))


Код ui_functions.py

### ФАЙЛ: ui_functions.py

from PyQt5.QtWidgets import QGraphicsDropShadowEffect
from PyQt5.QtGui import QColor

from main import *
from main import MainWindow

class UIFunctions (MainWindow):
    def uiDefinitions(self):
        ############################################
        # REMOVE TITLE BAR #### удалил тайтл #######
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)


        # SET DROPSHADOW WINDOW # <--- НЕ работает
        self.shadow = QGraphicsDropShadowEffect(self)
        self.shadow.setBlurRadius(20)
        self.shadow.setXOffset(0)
        self.shadow.setYOffset(0)
        self.shadow.setColor(QColor(0, 0, 0, 100))

        # APPLY DROPSHADOW TO FRAME # <--- НЕ работает
        self.ui.main_frame.setGraphicsEffect(self.shadow)


        # MAXIMIZE / RESTORE 
        self.ui.btn_maximize.clicked.connect(lambda: UIFunctions.maximize_restore(self))

        # MINIMIZE
        self.ui.btn_minimize.clicked.connect(lambda: self.showMinimized())

        # CLOSE
        self.ui.btn_close.clicked.connect(lambda: self.close())

Код main.py

### ФАЙЛ: main.py

import sys
import platform

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt, QEvent
from PyQt5.QtWidgets import QMainWindow, QApplication, QGraphicsDropShadowEffect
from PyQt5.QtGui import QColor

# GUI FILE
from ui_main import Ui_MainWindow

# IMPORT FUNCTIONS
from ui_functions import *

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        ## ==> SET UI DEFINITIONS
        UIFunctions.uiDefinitions(self)

        ## SHOW ==> MAIN WINDOW
        ########################################################################
        self.show()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec_())


Ответы (0 шт):