pyqt5实现圆角窗口
时间: 2023-09-14 19:11:31 浏览: 85
在PyQt5中实现圆角窗口可以通过以下步骤实现:
1. 通过设置窗口样式实现窗口圆角化,可以使用`setWindowFlags`方法设置窗口样式为`Qt.FramelessWindowHint`,这个方法可以去掉窗口的标题栏和边框。
2. 通过设置窗口的遮罩来实现窗口圆角化,可以使用`setMask`方法设置窗口遮罩,遮罩是一个蒙版,只有蒙版内的区域会被显示出来。
下面是一个简单的示例代码:
```python
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QBrush, QColor
from PyQt5.QtCore import Qt
class RoundWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowFlags(Qt.FramelessWindowHint)
self.setAttribute(Qt.WA_TranslucentBackground)
self.resize(300, 200)
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing) # 设置抗锯齿
brush = QBrush(QColor(255, 255, 255, 200)) # 设置画刷颜色和透明度
painter.setBrush(brush)
painter.setPen(Qt.NoPen)
painter.drawRoundedRect(self.rect(), 10, 10) # 绘制圆角矩形
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = RoundWindow()
w.show()
sys.exit(app.exec_())
```
在上面的代码中,我们首先设置了窗口样式为`Qt.FramelessWindowHint`,然后通过`setMask`方法设置了窗口的遮罩。在`paintEvent`方法中,我们使用`QPainter`类绘制了一个圆角矩形,设置了画刷颜色和透明度,并设置了抗锯齿,最后调用`drawRoundedRect`方法绘制圆角矩形。
注意:在使用`setMask`方法设置窗口遮罩时,需要在`paintEvent`方法中重绘窗口,否则可能会出现显示不正常的情况。