救命,查了好几个小时的资料都没有,使用chatGPT也是给的错代码。最后去看了官方文档:MouseClickEvent — pyqtgraph 0.13.1 documentation才解决。最关键的一点是,不能直接使用Pos(),使用event.scenePos(),直接看代码吧:
from PyQt5.QtWidgets import QApplication
from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
import sys
# 创建应用程序和主窗口
app = QApplication([])
win = pg.GraphicsLayoutWidget(show=True, title="GraphicsLayoutWidget Example")
# 创建子图
p1 = win.addPlot(title="Plot 1")
p2 = win.addPlot(title="Plot 2")
# 定义槽函数
def slot_function_2(event):
pos = event.scenePos()
print(pos)
if p1.sceneBoundingRect().contains(pos):
print("Slot function 1 called")
if p2.sceneBoundingRect().contains(pos):
print("Slot function 2 called")
# 在这里实现对子图的操作
# 连接槽函数到子图
p1.scene().sigMouseClicked.connect(slot_function_2)
p2.scene().sigMouseClicked.connect(slot_function_2)
# 运行应用程序
if __name__ == '__main__':
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QApplication.instance().exec_()