pyqt5 窗口圆角
时间: 2025-03-02 18:04:33 浏览: 44
### PyQt5中创建圆角窗口
为了在PyQt5中创建具有圆角效果的窗口,可以利用`QRadialGradient`来绘制背景并结合`setMask()`函数应用遮罩。下面是一个完整的例子,展示了如何实现这一功能:
```python
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter, QRegion, QRadialGradient, QColor
import sys
class RoundedWindow(QWidget):
def __init__(self):
super().__init__()
width = 400
height = 300
# 设置窗口无边框
self.setWindowFlags(self.windowFlags() | Qt.FramelessWindowHint)
# 定义窗口尺寸
self.setGeometry(100, 100, width, height)
radius = min(width, height) / 2 * 0.9 # 圆角半径取窗体宽高中较小者九成
gradient = QRadialGradient(QPointF(radius, radius), radius)
gradient.setColorAt(0, QColor("#ffffff")) # 中心颜色
gradient.setColorAt(1, QColor("#dddddd")) # 边缘颜色
mask_region = QRegion(int(self.rect().center().x()-radius),
int(self.rect().center().y()-radius),
int(radius*2), int(radius*2), QRegion.Ellipse)
self.mask(mask_region)
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
path = QPainterPath()
path.addRoundedRect(self.rect(), 20, 20) # 参数为矩形区域和X轴Y轴上的圆角半径
painter.fillPath(path, QBrush(QColor('#FFFFFF')))
painter.end()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = RoundedWindow()
window.show()
sys.exit(app.exec_())
```
上述代码定义了一个名为`RoundedWindow`的新类,该类继承自`QWidget`[^1]。在这个类里重写了`paintEvent`事件处理器用于定制化绘画逻辑,在这里指定了想要画出的对象——即带有特定曲率参数(此处设为20像素)的四角被削平后的矩形。
此外,还调用了`mask()`方法传入一个椭圆形的`QRegion`对象作为参数,从而使得整个窗口呈现出近似于圆形的效果;同时去掉了默认框架以获得更纯净的设计风格。
阅读全文
相关推荐















