170414 PY中显示JS

来源:互联网 发布:vss软件保护 编辑:程序博客网 时间:2024/09/21 08:56

1625-5 王子昂 总结《2017年4月14日》 【连续第195天总结】

A.PyQt5嵌入JavaScript

B.使用官方提供的JSAPI可以直接插入地图,问题在于如何将其在QT中显示和参数传递

PyQt5中有QWebEngineeWidgets控件专门用来显示网页部分

setHtml方法直接传入Html语言无法正常显示,但是在同目录下将需要的JS保存为Html文件,再在PyQt中使用QUrl导入是可以的

代码:

from PyQt5.QtCore import *from PyQt5.QtWidgets import *from PyQt5.QtWebEngineWidgets import *import PyQt5import osclass Ui_MainWindow(object):    def setupUi(self, MainWindow):        MainWindow.setObjectName("MainWindow")        MainWindow.resize(800, 600)        self.centralwidget = QWidget(MainWindow)        self.centralwidget.setObjectName("centralwidget")        self.map = QWebEngineView(self.centralwidget)#QWebEngineView就是显示Web的控件        self.map.setGeometry(QRect(50, 50, 561, 471))        self.map.setObjectName("QWebEngineView")        MainWindow.setCentralWidget(self.centralwidget)        self.statusbar = QStatusBar(MainWindow)        self.statusbar.setObjectName("statusbar")        MainWindow.setStatusBar(self.statusbar)        self.retranslateUi(MainWindow)        QMetaObject.connectSlotsByName(MainWindow)    def retranslateUi(self, MainWindow):        _translate = QCoreApplication.translate        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))        '''self.map.setHtml(        <!DOCTYPE html><html><head>   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />   <style type="text/css">   body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}   </style>   <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的AK"></script>   <title>地图展示</title></head><body>   <div id="allmap"></div></body></html><script type="text/javascript">   // 百度地图API功能   var map = new BMap.Map("allmap");    // 创建Map实例   map.centerAndZoom(new BMap.Point(119.433, 32.193), 11);  // 初始化地图,设置中心点坐标和地图级别   map.addControl(new BMap.MapTypeControl());   //添加地图类型控件   map.setCurrentCity("镇江");          // 设置地图显示的城市 此项是必须设置的   map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放   //单击获取点击的经纬度   map.addEventListener("click",function(e){      alert(e.point.lng + "," + e.point.lat);   });</script>        '''#)        self.map.load(QUrl.fromLocalFile(os.path.abspath('baidu.html')))if __name__ == '__main__':    import sys    app = QApplication(sys.argv)    widget = QMainWindow()    ui = Ui_MainWindow()    ui.setupUi(widget)    widget.show()    sys.exit(app.exec_())
目前可以正常显示地图、滚轮缩放和拖动功能,显示坐标的功能是JS内部用alert实现的
查了一下stackoverflow好像可以信号和槽进行交互,明天看看能不能实现
还有考虑一下和C++的协同工作……
C.明日计划
PY和JS的数据传递

0 0
原创粉丝点击