首页 > 解决方案 > 如何从 PyQT5 窗口访问 PyQGS 地图画布

问题描述

我正在启动pyQgis,新手。编码知识不够。请不要因为缺少代码而忽略问题。请指导。

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

标签: pyqt5qgis

解决方案


如果单击按钮,则地图的坐标已经消失。您需要使用鼠标单击地图,例如使用 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)

推荐阅读