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

问题描述 投票:-2回答:1

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

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

pyqt5 qgis
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.