pyqt5 - 如何从 PyQT5 窗口访问 PyQGS 地图画布
问题描述
我正在启动pyQgis,新手。编码知识不够。请不要因为缺少代码而忽略问题。请指导。
我正在显示 QgsMapCanvas。在主窗口的 menuBar(将 QgsMapCanvas 显示为小部件)上,单击,打开一个 GUI(pyqt5)。GUI 有一个 QLabel、一个 QLineEdit 和一个 QpushButton。如何在按下 QPushButton 时访问鼠标坐标。非常感谢你
解决方案
如果单击按钮,则地图的坐标已经消失。您需要使用鼠标单击地图,例如使用 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)
推荐阅读
- angularjs - 带有 Firebase 身份验证的 AngularJS
- mysql - 加入多个表 - 评论和回复
- mariadb - 将 MariaDB 10.1.32 版本升级到 10.3.7
- html - 如何以角度水平调整 div 列的大小?
- android - FusedLocationProviderClient 没有轴承数据
- c# - 带有虚拟纯接口的 SWIG c#
- firebase - 无法检查用户是否已通过身份验证或未对本机 + firebase 做出反应
- ios - 有没有人在 WKWebview 上实现了自动填充联系人?
- python-3.x - 遇到的错误:分类指标无法处理多类多输出和二进制目标的混合
- linux - Linux (SLES) 机器上没有 krb5.keytab 文件