簡體   English   中英

將像素/場景坐標(從 MouseClickEvent)轉換為 plot 坐標

[英]Convert pixel/scene coordinates (from MouseClickEvent) to plot coordinates

我有一個GraphicsLayoutWidget ,我在其中添加了一個PlotItem 我有興趣單擊圖形中的某個位置(而不是曲線或項目)並在圖形坐標中獲取單擊點。 因此,我將信號sigMouseClicked連接到一個自定義方法,如下所示:

...
self.graphics_view = pg.GraphicsLayoutWidget()
self.graphics_view.scene().sigMouseClicked.connect(_on_mouse_clicked)

def _on_mouse_clicked(event):
    print(f'pos: {event.pos()}  scenePos: {event.scenePos()})
...

雖然這給了我看起來像Point (697.000000, 882.000000)的坐標,但我很難將它們轉換為圖形的“軸”坐標中的坐標(例如,軸在 [0.1] 范圍內的 (0.3, 0.5))。 我嘗試了許多 mapTo/From* 方法但沒有成功。

有什么方法可以用 PyQtGraph 存檔嗎?

您必須使用 plotitem 的視圖框:

import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui


class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.graphics_view = pg.GraphicsLayoutWidget()

        self.setCentralWidget(self.graphics_view)

        self.plot_item = self.graphics_view.addPlot()
        curve = self.plot_item.plot()
        curve.setData([0, 0, 1, 1, 2, 2, 3, 3])

        self.graphics_view.scene().sigMouseClicked.connect(self._on_mouse_clicked)

    def _on_mouse_clicked(self, event):
        p = self.plot_item.vb.mapSceneToView(event.scenePos())
        print(f"x: {p.x()}, y: {p.y()}")


def main():
    app = QtGui.QApplication([])

    w = MainWindow()
    w.show()

    app.exec_()


if __name__ == "__main__":
    main()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM