pyside6界面有立体效果的圆形指示灯
时间: 2024-10-20 18:13:37 浏览: 34
在 PySide6 中,可以使用 Qt 的 QPainter 类来创建具有立体效果的圆形指示灯。下面是一个简单的示例代码,展示了如何使用 PySide6 创建一个具有立体效果的圆形指示灯:
```python
from PySide6 import QtCore, QtWidgets, QtGui
class Indicator(QtWidgets.QWidget):
def __init__(self):
super().__init__()
# 设置窗口的样式和背景色
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
self.setStyleSheet("background-color: rgba(255, 255, 255, 0.8);")
# 创建一个 QLabel 控件作为指示灯
self.indicator = QtWidgets.QLabel(self)
self.indicator.setGeometry(50, 50, 80, 80)
self.indicator.setStyleSheet("border: none; background-color: rgba(255, 255, 255, 0.6);")
self.indicator.show()
# 创建指示灯的中心点
self.center_point = QtCore.QPoint(self.indicator.rect().center().x(), self.indicator.rect().center().y())
# 绘制指示器的形状和阴影
self.paint_indicator()
def paint_indicator(self):
# 创建 QPainter 对象
painter = QtGui.QPainter(self)
# 设置前景色为白色,并使用 Qt 的 QPainterPath 类创建一个圆形路径
painter.setBrush(QtGui.QColor(255, 255, 255))
painter.setPen(QtCore.Qt.NoPen)
path = QtGui.QPainterPath()
path.addEllipse(self.center_point, 60, 60)
# 将 QPainterPath 对象绘制到窗口上,并添加阴影效果
painter.drawPath(path)
painter.setBrush(QtCore.Qt.NoBrush)
painter.setPen(QtGui.QPen(QtCore.Qt.black, 2))
painter.drawEllipse(self.center_point + QtCore.QPoint(7, 7), 35, 35)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
window = Indicator()
window.show()
sys.exit(app.exec())
```
上述代码创建了一个具有立体效果的圆形指示灯。它使用了 QLabel 作为指示灯的容器,通过 `setGeometry` 方法设置了指示灯的大小和位置。使用 `setStyleSheet` 方法设置了窗口的背景色和指示灯的样式。通过 `paint_indicator` 方法,使用 QPainter 类绘制了指示器的形状和阴影效果。你可以根据需要调整指示灯的大小、位置和样式,以实现所需的效果。
阅读全文