赞
踩
在 PySide6 中,可以使用 QGraphicsOpacityEffect 类来实现整体显示透明度。下面是一个简单的示例,演示了如何为 QLabel 设置透明度:
- from PySide6.QtWidgets import QApplication, QLabel, QGraphicsOpacityEffect, QVBoxLayout, QWidget
-
- app = QApplication([])
-
- # 创建主窗口
- window = QWidget()
- layout = QVBoxLayout(window)
-
- # 创建 QLabel
- label = QLabel("这是一个带有透明度的 QLabel")
- layout.addWidget(label)
-
- # 创建 QGraphicsOpacityEffect 对象
- opacity_effect = QGraphicsOpacityEffect()
- opacity_effect.setOpacity(0.5) # 设置透明度,0.0 完全透明,1.0 完全不透明
-
- # 应用效果到 QLabel
- label.setGraphicsEffect(opacity_effect)
-
- # 设置主窗口
- window.setLayout(layout)
- window.show()
-
- app.exec()

- from PySide6.QtCore import QTimer
- from PySide6.QtWidgets import QApplication, QLabel, QGraphicsOpacityEffect, QVBoxLayout, QWidget
-
- app = QApplication([])
-
- # 创建主窗口
- window = QWidget()
- layout = QVBoxLayout(window)
-
- # 创建 QLabel
- label = QLabel()
- label.setFixedSize(20, 20) # 设置尺寸,长宽相等
- label.setStyleSheet('border:1px solid #868686;border-radius:10px;background-color: rgb(0, 255, 0);') # border-radius设置为尺寸的一半,就显示为圆形
-
- layout.addWidget(label)
-
- # 创建 QGraphicsOpacityEffect 对象
- opacity_effect = QGraphicsOpacityEffect()
-
- rate = 0.1 # 初始透明度
- # 定时器
- timer = QTimer()
- timer.start(200)
-
-
- # 定时器超时的槽函数
- def timeout_slot():
- global rate
- rate += 0.1
- if rate >= 1.5:
- rate = 0.1
- opacity_effect.setOpacity(rate) # 设置透明度,0.0 完全透明,1.0 完全不透明
- # 应用效果到 QLabel
- label.setGraphicsEffect(opacity_effect)
-
-
- timer.timeout.connect(timeout_slot)
-
-
-
-
- # 设置主窗口
- window.setLayout(layout)
- window.show()
-
- app.exec()

显示效果:
- # 这是一个动态变化透明度的QLabel
- from PySide6.QtCore import QTimer
- from PySide6.QtWidgets import QApplication, QLabel, QGraphicsOpacityEffect, QVBoxLayout, QWidget
-
-
- class DynamicTransparencyLamp(QLabel):
- def __init__(self,parent=None):
- super().__init__(parent)
- self.clock = bool
- self.transparency_rate = 0.1
- self.opacity_effect = QGraphicsOpacityEffect()
-
- # 设置透明度并显示
- def setTransparency(self):
- self.transparency_rate += 0.1
- if self.transparency_rate >= 1.5:
- self.transparency_rate = 0.1
- self.opacity_effect.setOpacity(self.transparency_rate) # 设置透明度,0.0 完全透明,1.0 完全不透明
- # 应用效果到 QLabel
- self.setGraphicsEffect(self.opacity_effect)
-
-
- if __name__ == '__main__':
- app = QApplication([])
-
- # 创建主窗口
- window = QWidget()
- layout = QVBoxLayout(window)
-
- # 创建 QLabel
- label = DynamicTransparencyLamp()
- label.setFixedSize(20, 20) # 设置尺寸,长宽相等
- label.setStyleSheet('border:1px solid #868686;border-radius:10px;background-color: rgb(0, 255, 0);') # border-radius设置为尺寸的一半,就显示为圆形
-
- layout.addWidget(label)
-
- # 定时器
- timer = QTimer()
- timer.start(200)
-
- # 定时器超时的槽函数
- def timeout_slot():
- label.setTransparency()
-
- timer.timeout.connect(timeout_slot)
- # 设置主窗口
- window.setLayout(layout)
- window.show()
- app.exec()

项目中的应用:摄像指示灯
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。