pyside6的温度计样式表
时间: 2025-02-12 13:15:26 浏览: 51
### 使用 PySide6 实现温度计样式的样式表
在 PySide6 中,可以通过自定义 `QWidget` 并应用 Qt 样式表 (QSS) 来创建具有温度计效果的控件。下面展示了一个具体的例子,该例子通过继承 `QWidget` 类并重写其绘制事件来实现这一功能。
#### 创建自定义温控器类
首先定义一个新的 Python 文件,在其中导入必要的模块:
```python
from PySide6.QtWidgets import QWidget, QVBoxLayout, QLabel
from PySide6.QtCore import Qt, QRectF
from PySide6.QtGui import QPainter, QColor, QBrush
```
接着构建一个名为 `ThermometerWidget` 的新组件用于表示温度计:
```python
class ThermometerWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
layout = QVBoxLayout(self)
self.temperature_label = QLabel("0°C", alignment=Qt.AlignCenter)
font = self.temperature_label.font()
font.setPointSize(24)
self.temperature_label.setFont(font)
layout.addWidget(self.temperature_label)
def set_temperature(self, value):
"""设置当前温度"""
self._value = max(min(value, 100), -50) # 温度范围设定为-50至100摄氏度
color = "red" if self._value >= 70 else ("orange" if self._value >= 30 else "green")
style_sheet = f'background-color: {color}; border-radius: 8px;'
self.setStyleSheet(style_sheet)
self.temperature_label.setText(f"{int(self._value)}°C")
def paintEvent(self, event):
painter = QPainter(self)
rect = QRectF(10, 10, self.width()-20, self.height()-20)
gradient = QLinearGradient(rect.topLeft(), rect.bottomRight())
gradient.setColorAt(0, QColor('blue'))
gradient.setColorAt(1, QColor('white'))
brush = QBrush(gradient)
painter.fillRect(rect, brush)
pen = painter.pen()
pen.setWidth(2)
pen.setColor(Qt.black)
painter.setPen(pen)
painter.drawRect(rect)
```
此代码片段展示了如何利用 `paintEvent()` 方法来自定义绘图逻辑,并根据实际需求调整颜色渐变和其他视觉属性[^1]。
为了使这个部件能够响应外部的数据变化,可以将其与定时器或其他数据源关联起来,就像之前提到过的那样使用信号和槽机制。
阅读全文
相关推荐

















