I want to access the coordinates outside the mousePress function.
What I want is:
call self.curve.scene().sigMouseClicked.connect(self.mousePress)
when PushButton is pressed.
But I am unable to return the values from mousePress function.
import sys
import platform
from PySide2.QtWidgets import QApplication, QWidget, QPushButton
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import (QCoreApplication, QPropertyAnimation, QDate, QDateTime, QMetaObject,
QObject, QPoint, QRect, QSize, QTime, QUrl, Qt, QEvent)
from PySide2.QtGui import (QBrush, QColor, QConicalGradient, QCursor, QFont,
QFontDatabase, QIcon, QKeySequence, QLinearGradient, QPalette, QPainter,
QPixmap, QRadialGradient)
from PySide2.QtWidgets import *
from PySide2.QtGui import QPainter, QBrush, QPen, QPainterPath
import numpy as np
import math
from PySide2 import QtWidgets
from pyqtgraph.Qt import QtGui, QtCore
from pyqtgraph import PlotWidget, plot
import pyqtgraph as pg
import os
#import serial
import time
#ser = serial.Serial('COM5', 9600)
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.graphWidget = pg.PlotWidget()
self.setCentralWidget(self.graphWidget)
self.button = QPushButton('Run', self)
self.button.setToolTip('Click to run.')
self.button.move(100,70)
hour = []
temperature = []
x_for_line = [0, 0]
y_for_line = [0, 10]
x=0
r = 10
theta = 0
while (theta <= 180):
hour.append( r* math.sin(math.radians(theta)))
temperature.append(r * math.sin(math.radians(90-theta)))
theta = theta + 0.1
#Add grid
self.graphWidget.showGrid(x=True, y=True)
self.graphWidget.setBackground('w')
pen = pg.mkPen(color=(94, 186, 95), width=8)
pen2 = pg.mkPen(color=(13, 31, 45), width=2)
self.graphWidget.plot(x_for_line, y_for_line, pen=pen2)
self.graphWidget.plot(temperature, hour, pen=pen)
self.curve = self.graphWidget.plot(x_for_line,y_for_line , pen=pen)
self.curve.scene().sigMouseMoved.connect(self.onMouseMoved)
#if(btn_pressed):
self.curve.scene().sigMouseClicked.connect(self.mousePress)
# if(self.button.clicked.connect(self.on_click())):
# self.curve.scene().sigMouseClicked.connect(self.mousePress)
# k=0
# def on_click(self):
# return True
def onMouseMoved(self, point):
p = self.graphWidget.plotItem.vb.mapSceneToView(point)
self.statusBar().showMessage("{}-{}".format(p.x(), p.y()))
def mousePress(self, event):
global p_list
p_list = []
items = self.graphWidget.scene().items(event._scenePos)
mousePoint = self.graphWidget.plotItem.vb.mapSceneToView(event._scenePos)
self.graphWidget.clear()
# print((mousePoint.x()),(mousePoint.y()))
p_list = [mousePoint.x(), mousePoint.y()]
return p_list
def main():
app = QtWidgets.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
question from:
https://stackoverflow.com/questions/65867595/how-can-i-use-or-return-the-coordinates-of-pyqtgraph-after-clicking-outside-th