pyqt5 绘制折线图时让其具有游标属性
时间: 2024-10-08 21:06:00 浏览: 29
PyQt5:QtCharts 绘制折线图
4星 · 用户满意度95%
在PyQt5中,你可以使用`QGraphicsView`和相关的图形元素如`QLineItem`来创建自定义的折线图,并添加鼠标游标的交互。首先,你需要创建一个`QGraphicsScene`,然后在这个场景中绘制折线。以下是一个简单的例子:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QColor, QPen, QPointF
from PyQt5.QtChart import QGraphicsScene, QGraphicsView, QLineSeries
class LineChart(QMainWindow):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
scene = QGraphicsScene()
view = QGraphicsView(scene)
self.setCentralWidget(view)
# 创建折线系列
series = QLineSeries()
for x, y in [(0, 10), (1, 20), (2, 30), (3, 40)]: # 示例数据点
series.append(x, y)
# 设置线条样式和颜色
pen = QPen(QColor('blue'), 2) # 线条宽度,颜色
series.setDefaultPen(pen)
# 添加到场景
line_item = QGraphicsSimpleTextItem(series) # 使用QGraphicsSimpleTextItem包裹折线
scene.addItem(line_item)
# 添加鼠标移动事件处理
def hoverMoveEvent(event):
if event.isAccepted():
pos = event.scenePos()
line_index = line_item.mapToItem(view.viewport(), pos).x() / scene.lineWidth()
x_value = series.xValue(line_index)
y_value = series.yValue(line_index)
print(f"Mouse hovered at ({x_value}, {y_value})")
view.hoverMoveEvent = hoverMoveEvent
self.setGeometry(300, 300, 600, 400)
self.setWindowTitle("PyQt5折线图带游标")
self.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = LineChart()
sys.exit(app.exec_())
```
在这个例子中,当鼠标悬停在折线上时,会打印出鼠标当前位置对应的坐标值。这只是一个基础示例,你可以根据需要修改数据源和交互细节。
阅读全文