pyqt5怎么让控件透明
时间: 2023-07-04 12:04:34 浏览: 114
在 PyQt5 中,可以使用 `setStyleSheet` 方法来设置控件的样式表,从而实现控件的透明效果。以下是一个简单的例子:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtCore import Qt
class MyLabel(QLabel):
def paintEvent(self, e):
painter = QPainter(self)
painter.fillRect(self.rect(), QColor(255, 255, 255, 0))
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
self.setAttribute(Qt.WA_TranslucentBackground)
self.setGeometry(100, 100, 400, 300)
self.label = MyLabel(self)
self.label.setText("Hello, World!")
self.label.setStyleSheet("color: white; font-size: 30px")
self.label.setGeometry(50, 50, 300, 200)
self.show()
if __name__ == '__main__':
app = QApplication([])
w = MyWidget()
app.exec_()
```
在上面的例子中,我们继承了 QLabel 控件,并重写了它的 paintEvent 方法,在其中使用 QPainter 对象绘制一个透明的矩形,用于实现透明效果。然后我们使用 setStyleSheet 方法设置控件的样式表,其中通过设置 `background-color` 属性的 alpha 值为 0,来使得控件的背景透明。最后我们使用 setAttribute 方法设置窗口的透明属性,来使得整个窗口透明。
阅读全文