我正在尝试从PyQt5应用程序内部加载和查询JS地图窗口小部件.我可以使用这个方法:
PyQt5.QtWebEngineWidgets.QWebEngineView().page().runJavaScript()
从加载的网页执行JS函数QWebEngineView()
但是我在理解如何将一个由JS函数返回的值存储回python方面遇到了麻烦.
这里有一个完整的例子:
下面的PyQt5代码在PyQt4主窗口中加载一个pyqtwebtest.html
带有leaflet.js
地图窗口小部件的html page(),并添加一个按钮来执行JS代码,目的是将返回的值存储在python变量中...
#!/usr/local/bin/python36 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtWebEngineWidgets import * class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.form_widget = FormWidget(self) _widget = QWidget() _layout = QVBoxLayout(_widget) _layout.addWidget(self.form_widget) self.setCentralWidget(_widget) class FormWidget(QWidget): def __init__(self, parent): super(FormWidget, self).__init__(parent) self.__controls() self.__layout() def __controls(self): self.browser = QWebEngineView() self.browser.load(QUrl('file:///Users/epi/pyqtwebtest.html')) def __layout(self): self.vbox = QVBoxLayout() self.hBox = QVBoxLayout() self.getboundsbutton = QPushButton() self.hBox.addWidget(self.browser) self.hBox.addWidget(self.getboundsbutton) self.vbox.addLayout(self.hBox) self.setLayout(self.vbox) self.getboundsbutton.clicked.connect(self.getBounds) def getBounds(self): self.bounds = self.browser.page().runJavaScript("[map.getBounds().getSouthWest().lat, map.getBounds().getSouthWest().lng, map.getBounds().getNorthEast().lat, map.getBounds().getNorthEast().lng]") print(self.bounds) # this is where I get stuck .. the result is None # the same js code in the html file prints the bounds values # that I want to store on the python side of the app def main(): app = QApplication(sys.argv) win = MainWindow() win.show() app.exec_() if __name__ == '__main__': sys.exit(main())
加载以下html页面:
PyQtLeaflet Tags | 热门标签RankList | 热门文章
- 1Maven将依赖调解策略设置为最新而不是最近
- 2Spring Redis - 从application.properties文件中读取配置
- 3SQL将dd / mm / yy转换为yymmdd
- 4榆树"找不到模块"
- 5从列表中写一个没有括号的txt
- 6如果应用程序使用Enable_Bitcode = No提交,Apple是否会拒绝该应用程序
- 7试图制作一个for循环来绘制一个svg
- 8在angularJS中::的意思是什么
- 9将参数传递给Observable.create
- 10功能麻烦
- 11如何通过单击xamarin形式的按钮来打开网页
- 12TypeScript中的深度克隆(保留类型)
- 13使用jQuery从javascript对象中删除元素?
- 14Python:删除字符串开头的数字
- 15QueryDSL返回最大值
- 16在ASP.NET Web API 2中禁用*all*异常处理(为我自己腾出空间)?
- 17多个Laravel网站,中央代码库
- 18软件包'stringr'和'stringi'的安装具有非零退出状态
- 19MySQL寻找一个不错的索引
- 20Python BigQuery allowLargeResults with pandas.io.gbq