Можно ли закруглить края окна в PyQt6?

Рейтинг: 0Ответов: 1Опубликовано: 07.05.2023

Буду краток.
Сделал окно "без рамок" с помощью флага:

self.setWindowFlag(Qt.WindowType.FramelessWindowHint)

Хотелось бы немного закруглить края самого окна, чтобы интерфейс выглядел посовременнее!

Заранее спасибо за ответы!

Ответы

▲ 1

Можно!

main.py:

import sys
from PyQt6.QtWidgets import QApplication, QMainWindow
from PyQt6.QtGui import QColor, QPainter, QBrush, QPen
from PyQt6 import QtCore
from PyQt6.QtCore import Qt

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

        self.setWindowTitle("Окно с округленными рамками")
        self.setWindowFlags(QtCore.Qt.WindowType.FramelessWindowHint) #удаляем системную рамку
        self.setGeometry(100, 100, 600, 400)
        self.setAttribute(QtCore.Qt.WidgetAttribute.WA_TranslucentBackground) #удаляем фон
        self.setStyleSheet("background-color: #303030;")

        self.show()
        
    #\/рисуем окно\/#
    def paintEvent(self, event):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.RenderHint.Antialiasing)
        rounded_rect = self.rect().adjusted(0, 0, -1, -1)
        painter.setBrush(QBrush(QColor("#303030")))
        painter.setPen(QPen(Qt.PenStyle.NoPen))
        painter.drawRoundedRect(rounded_rect, 10, 10)
    #/\рисуем окно/\

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