一、成果图
功能:可以外部设置 Title 以及指针指向的数字。
二、自定义QWidget类
首先创建一个QWidget类,初始化一些参数,如窗口名称self.setWindowTitle
、窗口大小self.setMinimumSize
、要绘制的图标题self._title
等。设置字体格式、LCD初始化。
这里不喜欢Qt自带的颜色,所以在网上用取色器找到了喜欢的颜色的RGB参数,配合QColor设置了喜欢的颜色。
class Drawing(QWidget):
def __init__(self, parent=None):
super(Drawing, self).__init__(parent)
self.setWindowTitle("QPainter测试")
self.setMinimumSize(600, 200)
# self.setMaximumSize(700, 700)
self._title = 'Title____'
# 颜色设置
self.pieColorStart = QColor(63, 191, 127) # 绿色
self.pieColorMid = QColor(63, 127, 191) # 蓝色
self.pieColorEnd = QColor(203, 72, 72) # 红色
self.pointerColor = QColor(72, 203, 203) # 青色
# 设置字符
self.font = QFont("宋体", 8)
self.font.setBold(True)
# LCD初始化
self.lcd_init()
# 其他设置
...
...
编写 set 方法,以便后续可以通过调用 set 方法修改 Title 以及指针的 Value :
def setTitle(self, title):
self._title = title
def setValue(self, value):
self.currentValue = value
三、重写paintEvent
进行坐标轴变换,以及坐标刻度自适应。在开始绘画之前启用反锯齿,使画出的曲线更平滑。
def paintEvent(self, event):
# 坐标轴变换 默认640*480
width = self.width()
height = self.height()
painter = QPainter(self) # 初始化painter
painter.translate(width / 2, height / 2) # 坐标轴变换,调用translate()将坐标原点平移至窗口中心
# 坐标刻度自适应
side = min(width, height)
painter.scale