Как создать безрамочное окно с сохранением нативных анимаций

Я написал код для создания безрамочного окна. Проблема в том, что флаг FramelessWindowHint выключает не только отрисовку заголовка и рамок, но и анимацию окна по умолчанию (например, при сворачивании или закрытии/открытии окна). Я хочу убрать рамки и заголовок, но оставить эти анимации.

import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QToolButton, QWidget, QHBoxLayout, QStyle
from PySide6.QtCore import Qt


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.resize(500, 300)
        self.setWindowFlags(Qt.FramelessWindowHint)
        
        min_button = QToolButton()
        min_icon = self.style().standardIcon(QStyle.StandardPixmap.SP_TitleBarMinButton)
        min_button.setIcon(min_icon)
        min_button.clicked.connect(self.window().showMinimized)

        max_button = QToolButton()
        max_icon = self.style().standardIcon(QStyle.StandardPixmap.SP_TitleBarMaxButton)
        max_button.setIcon(max_icon)
        max_button.clicked.connect(self.window().showMaximized)

        close_button = QToolButton()
        close_icon = self.style().standardIcon(QStyle.StandardPixmap.SP_TitleBarCloseButton)
        close_button.setIcon(close_icon)
        close_button.clicked.connect(self.window().close)

        layout = QHBoxLayout()
        layout.addWidget(min_button)
        layout.addWidget(max_button)
        layout.addWidget(close_button)
        layout.setAlignment(Qt.AlignmentFlag.AlignTop)

        centr_wid = QWidget()
        centr_wid.setLayout(layout)

        self.setCentralWidget(centr_wid)

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

UPD: Так выглядит анимация окна без установленного флага введите сюда описание изображения

Если поставить флаг, анимация пропадает введите сюда описание изображения


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