Reputation: 77
I'm following this tutorial. Here is a simple minimal pyqtgrapth embedded in pyqt5. How can I enable pyqtgraph to show cursor coordinate on canvas?
from PyQt5 import QtWidgets
from pyqtgraph import PlotWidget, plot
import pyqtgraph as pg
import sys
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.graphWidget = pg.PlotWidget()
self.setCentralWidget(self.graphWidget)
hour = [1,2,3,4,5,6,7,8,9,10]
temperature = [30,32,34,32,33,31,29,32,35,45]
self.graphWidget.plot(hour, temperature)
def main():
app = QtWidgets.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Upvotes: 1
Views: 910
Reputation: 13681
Try it:
import sys
from PyQt5 import QtWidgets
from pyqtgraph import PlotWidget, plot
import pyqtgraph as pg
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.graphWidget = pg.PlotWidget()
self.setCentralWidget(self.graphWidget)
hour = [1,2,3,4,5,6,7,8,9,10]
temperature = [30,32,34,32,33,31,29,32,35,45]
self.graphWidget.plot(hour, temperature)
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
self.label = pg.TextItem(text="Abscissa: {} \nOrdinate: {}".format(0, 0))
self.graphWidget.addItem(self.label)
self.setMouseTracking(True)
self.graphWidget.scene().sigMouseMoved.connect(self.onMouseMoved)
def onMouseMoved(self, evt):
if self.graphWidget.plotItem.vb.mapSceneToView(evt):
point =self.graphWidget.plotItem.vb.mapSceneToView(evt)
self.label.setHtml(
"<p style='color:white'>Abscissa: {0} <br> Ordinate: {1}</p>".\
format(point.x(), point.y()))
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
def main():
app = QtWidgets.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Upvotes: 3