Почему метод setGraphicsEffect не применяется в PyQt5?

Как добавить тень вокруг кастомного окна программы, после того как были созданы собственный тайтл бар и кнопки, а стандартный интерфейс Windows был удален? Я пробовал использовать `setGraphicsEffect`, но это не сработало. Не могу понять, почему. Можете поделиться способом исправить эту проблему?
  • 9 июня 2024 г. 18:01
Ответы на вопрос 1
Метод setGraphicsEffect не работает в PyQt5 из-за особенностей работы с графическими эффектами в данной библиотеке. Вместо этого, вам следует использовать класс QGraphicsDropShadowEffect для создания тени вокруг вашего кастомного окна.

Для добавления тени вокруг вашего окна, используйте следующий код:

```python
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QColor, QPalette, QPixmap
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QImage, QPainter

class CustomWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        
        # Создаем тень вокруг окна
        self.shadow = QGraphicsDropShadowEffect(self)
        self.shadow.setBlurRadius(5)
        self.shadow.setColor(QColor(0, 0, 0, 80))
        self.shadow.setOffset(0, 0)
        self.setGraphicsEffect(self.shadow)
        
        # Далее создаем собственный тайтл бар и кнопки
        
if __name__ == '__main__':
    app = QApplication([])
    window = CustomWindow()
    window.show()
    app.exec_()
```

Этот код создаст тень вокруг вашего кастомного окна, которая будет выглядеть как эффект поверх него. Вы можете настроить параметры тени, такие как радиус размытия (blur radius), цвет и смещение (offset) в соответствии с вашими потребностями.

Надеюсь, это поможет вам добавить тень вокруг вашего кастомного окна после удаления стандартного интерфейса Windows.
Похожие вопросы