Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从pyqtgraph以列表形式返回鼠标单击坐标_Python_Pyqtgraph_Mouseclick Event - Fatal编程技术网

Python 从pyqtgraph以列表形式返回鼠标单击坐标

Python 从pyqtgraph以列表形式返回鼠标单击坐标,python,pyqtgraph,mouseclick-event,Python,Pyqtgraph,Mouseclick Event,我对pyqtgraph非常陌生,并且已经学习python一段时间了。我正在尝试从pyqtgraph plotitem获取鼠标单击坐标。 这是我到目前为止所拥有的 class CrossHair(): 定义初始化(self,win,row=0,col=0): self.label=pg.LabelItem(justify='right') self.p1=win.getItem(行=行,列=列) self.p1.setAutoVisible(x=True,y=True) win.addItem(s

我对pyqtgraph非常陌生,并且已经学习python一段时间了。我正在尝试从pyqtgraph plotitem获取鼠标单击坐标。 这是我到目前为止所拥有的

class CrossHair():
定义初始化(self,win,row=0,col=0):
self.label=pg.LabelItem(justify='right')
self.p1=win.getItem(行=行,列=列)
self.p1.setAutoVisible(x=True,y=True)
win.addItem(self.label,行=行,列=列)
self.vLine=pg.InfiniteLine(角度=90,可移动=False)
self.hLine=pg.InfiniteLine(角度=0,可移动=False)
self.vb=self.p1.vb
self.p1.addItem(self.vLine,ignoreBounds=True)
self.p1.addItem(self.hLine,ignoreBounds=True)
self.proxy=pg.SignalProxy(self.p1.scene().sigMouseMoved,rateLimit=60,slot=self.mouseMoved)
self.p1.scene().sigMouseClicked.connect(self.mouseClicked)
#self.p1.scene().sigMouseMoved.connect(self.mouseMoved)
def mouseMoved(self,evt):
pos=evt[0]##使用信号代理将原始参数转换为元组
如果self.p1.sceneboundingdirect()包含(pos):
mousePoint=self.vb.MapScenetView(pos)
self.label.setText(“x=%0.1f,y=%0.1f”%(mousePoint.x(),mousePoint.y())
self.vLine.setPos(mousePoint.x())
self.hLine.setPos(mousePoint.y())
def鼠标单击(自身、事件):
全局鼠标坐标
鼠标坐标=[]
pos=event.scenePos()
mousePoint=self.vb.MapScenetView(pos)
鼠标坐标=[mousePoint.x(),mousePoint.y()]
返回鼠标坐标
#self.sigMouseClicked.disconnect()
我想定义一个函数
get_points(win)
,它获取当前pyqtgraph窗口,绘制十字线,每当我单击时,返回鼠标单击坐标列表。单击一次后,我不希望它再注册任何坐标,除非我再次调用该函数

我写了一些类似的东西,但不起作用:

def获得积分(赢):
ch=十字线(win)
ch.p1.scene().sigMouseClicked.connect(ch.mouseClicked)

非常感谢您的任何帮助或建议

事件执行的函数
不知道如何处理您使用
返回
发送的值,并且您无法更改它-因此使用
返回
是没有用的。您必须将点添加到全局
鼠标坐标
self.mouse\u坐标
。稍后,其他函数应该从全局
鼠标坐标
自身获取值。鼠标坐标
。GUI框架不像
输入()
-它不会等待函数结束
获取点
,但它会创建十字线,分配
鼠标点击
,然后返回主代码。如果您必须使用点,那么直接在
mouseClicked
中执行。我确实尝试过将self.MOUSE\u坐标添加到CrossHair类中。在get_points(win)函数中,我定义了:
def get_points(win):ch=CrossHair(win)ch.p1.scene().sigMouseClicked.connect(ch.mouseClicked)返回ch.MOUSE_坐标
但是,这并没有注册任何点击,我做错了什么?在GUI工作之前我很难过,然后
input()
-它不会等待鼠标(此时它必须运行其他元素)-因此,您的
get_points()
(和
返回ch.mouse_坐标
)会在您尝试单击之前执行,但无法获取坐标。如果需要使用坐标,请直接在
mouseClicked