如何从 PyQT5 窗口访问 PyQGIS 地图画布
Posted
技术标签:
【中文标题】如何从 PyQT5 窗口访问 PyQGIS 地图画布【英文标题】:How to Access PyQGS map Canvas from PyQT5 window 【发布时间】:2019-11-19 09:21:06 【问题描述】:我正在启动 pyQgis,新手。编码知识不够。请不要因为缺少代码而忽略问题。请指导。
我正在显示 QgsMapCanvas。在主窗口的 menuBar(将 QgsMapCanvas 显示为小部件)上,在 Click 上,将打开一个 GUI(pyqt5)。 GUI 有一个 QLabel、一个 QLineEdit 和一个 QpushButton。 如何在按下 QPushButton 时访问鼠标坐标。非常感谢你
【问题讨论】:
【参考方案1】:如果你点击按钮,地图的坐标已经消失了。 您需要使用鼠标单击地图,例如通过使用 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)
【讨论】:
以上是关于如何从 PyQT5 窗口访问 PyQGIS 地图画布的主要内容,如果未能解决你的问题,请参考以下文章