qlabel渐入显示图片
时间: 2023-08-29 14:13:32 浏览: 131
您可以使用QPropertyAnimation来实现QLabel的渐入显示效果。以下是一个演示代码:
```python
from PyQt5.QtCore import Qt, QPropertyAnimation, QRect
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel
class MainWindow(QWidget):
def __init__(self):
super().__init__()
# 创建QLabel并设置初始透明度为0
self.label = QLabel()
self.label.setPixmap(QPixmap("image.png"))
self.label.setAlignment(Qt.AlignCenter)
self.label.setStyleSheet("background-color: #f0f0f0; color: #333;")
self.label.setContentsMargins(10, 10, 10, 10)
self.label.setScaledContents(True)
self.label.setWindowOpacity(0)
# 创建布局并将QLabel添加到布局中
layout = QVBoxLayout()
layout.addWidget(self.label)
self.setLayout(layout)
# 创建QPropertyAnimation对象并设置动画属性
self.animation = QPropertyAnimation(self.label, b"windowOpacity")
self.animation.setDuration(2000)
self.animation.setStartValue(0)
self.animation.setEndValue(1)
# 启动动画
self.animation.start(QPropertyAnimation.DeleteWhenStopped)
def paintEvent(self, event):
# 绘制背景
painter = QtGui.QPainter(self)
painter.fillRect(self.rect(), QtGui.QColor(255, 255, 255))
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在上面的例子中,我们首先创建一个QLabel并设置透明度为0,然后将其添加到布局中。接下来,我们创建一个QPropertyAnimation对象并将其目标设置为windowOpacity属性,它控制QLabel的透明度。我们还设置了起始值和结束值以及动画持续时间。最后,我们启动动画并将其设置为DeleteWhenStopped模式,以便动画完成后自动删除QPropertyAnimation对象。
阅读全文