PyQt5 中实现控件淡入淡出效果(控件的透明度渐变效果)

最近写一个程序用到 PyQt5,其中需要让一个 label 标签实现淡入效果,即透明度的渐变效果。上网搜了很久,都只有窗口的淡入淡出,而没有控件的淡入淡出的实现方法。自己研究后写了一个方法实现这个效果,写在这里做个记录。

本篇文章内容

  • 1. 控件淡入淡出效果
  • 2. 窗体关闭淡出

1. 控件淡入淡出效果

对于控件淡入淡出,我原本计划使用透明度属性动画 QPropertyAnimation。就像这样:

self.anim = QPropertyAnimation(self.label, b"windowOpacity")

试验发现,透明度渐变动画不适用于控件,无效果。却适用于窗体的淡出。我了解到可能是因为 windowOpacity 只对顶层窗口起作用。

于是我尝试通过循环,不断重新设置控件的透明度,达到渐变效果。但我发现行不通,没有任何效果,而且会造成堵塞。

最后我搞了个定时器 QTimer,终于解决了这个问题:

import sys
from PyQt5.QtWidgets import  QApplication, QLabel
from PyQt5.QtCore import QPropertyAnimation, QTimer
from PyQt5.QtGui import QPalette

class QmyWindow(QWidget): 
	def __init__(self, parent=None):
		
		super().__init__(parent)
		
		self.label = QLabel(self)
		self.label.setText('控件淡入')
		self.label.setAutoFillBackground(True)
		# 设置标签背景色
		palette <

你可能感兴趣的:(Python,#,python其它,动画,开发语言,python,gui,pyqt5)