如何从PyQT5窗口访问PyQGS地图画布

时间:2019-11-19 09:21:06

标签: pyqt5 qgis

我正在开始pyQgis,新手。编码知识不足。请不要因为缺少代码而忽略该问题。请指导。

我正在显示QgsMapCanvas。在主窗口的menuBar上(将QgsMapCanvas显示为小部件),单击,将打开一个GUI(pyqt5)。 GUI有一个QLabel,一个QLineEdit和一个QpushButton。 如何在按QPushButton的操作中访问鼠标坐标。非常感谢你

1 个答案:

答案 0 :(得分:0)

如果单击按钮,则地图的坐标已消失。 您需要使用鼠标点击地图,例如通过使用QgsMapTool。 Qgis 3.4示例-控制台:

# coding: utf-8
from PyQt5.QtWidgets import QDialog,QLabel,QHBoxLayout
from qgis.gui import QgsMapTool
from qgis.utils import iface

class CoordTool(QgsMapTool):
    def __init__(self, canvas):
        QgsMapTool.__init__(self, canvas)
        self.canvas = canvas
        self.setCursor(Qt.CrossCursor)

    def canvasReleaseEvent(self, event):
        point = self.toMapCoordinates(event.pos())
        coords = "X: "+ str(point.x()) +"/ Y: "+str( point.y())
        print(coords)

        dlg =QDialog()
        label =QLabel(coords)
        layout=QHBoxLayout()
        layout.addWidget(label)
        dlg.setLayout(layout)
        dlg.exec_()

canvas = iface.mapCanvas()
tool= CoordTool(canvas)
canvas.setMapTool(tool)