首页 > 解决方案 > 将 Leaflet Dragend 事件导入 pyqtlet

问题描述

在 Pyqtlet 中,我可以通过以下代码将映射事件链接到 Pyqt 信号槽结构。

地图.py:

clicked = pyqtSignal(dict)

@pyqtSlot(QJsonValue)
    def _onClick(self, event):
        self._logger.debug('map clicked. event: {event}'.format(event=event))
        self.clicked.emit(self._qJsonValueToDict(event))

self._connectEventToSignal('click', '_onClick')

事件.py

def _connectEventToSignal(self, event, signalEmitter):
    print(self.jsName + "\n")
    print(event + "\n")
    print(signalEmitter + "\n")

    # We need to delete some keys as they are causing circular structures
    js = '{name}.on("{event}", function(e) {{\
              delete e.target;\
              delete e.sourceTarget;\
              e = copyWithoutCircularReferences([e], e);\
              channelObjects.{name}Object.{signalEmitter}(e)}})'.format(
        name=self.jsName, event=event, signalEmitter=signalEmitter)
    self.runJavaScript(js)

但是相同的代码不适用于在 maker.py 中添加标记拖动事件。我得到的错误是:“js: Uncaught TypeError: Cannot read property '_onDrag' of undefined”。我认为我的 javascript 代码中有错误。我该如何解决?

标签: javascriptpythonleafletpyqt5

解决方案


推荐阅读