这方面资料不多,不懂html,不懂js,略懂python的我,稍微看了点html和js,好几天的摸索,终于测试成功了。

PYQT+HTML利用PYQT的webview调用JS内方法

1.python调用js需要使用webView.page().mainFrame().evaluateJavaScript()这个方法

2.这个方法需要制作信号和槽才能触发。

功能:python调用html内的js定位函数。实现在webview内显示定位

测试代码mainUI.py

# -*- coding: utf-8 -*-
# 作者:神秘藏宝室
from Ui_mainUI import Ui_Dialog #添加
from PyQt4.QtCore import *
from PyQt4.QtGui import * class MyBrowser(QDialog, Ui_Dialog):
"""
Class documentation goes here.
"""
def __init__(self, parent=None):
"""
Constructor @param parent reference to the parent widget
@type QWidget
"""
QDialog.__init__(self, parent)
self.setupUi(self)
htmlfile = "gpsPoint.html"
url = QUrl(htmlfile)
self.webView.load(url)
self.webView.loadFinished.connect(self._plot) print u"html载入"
# self.createConnection() # def createConnection(self):
# # self.connect(self.pushButtonGo,SIGNAL("clicked"),self.on_pushButtonGo_clicked)
# self.pushButtonGo.clicked.connect(self.on_pushButtonGo_clicked) @pyqtSlot(result="QString")
def _plot(self):
self.webView.page().mainFrame().evaluateJavaScript('theNewLocation(112.424483,34.640631);') @pyqtSignature("")
def on_lineEditAddress_returnPressed(self):
"""
Slot documentation goes here.
"""
self.search() @pyqtSignature("")
def on_pushButtonGo_clicked(self):
"""
Slot documentation goes here.
"""
self.search() def search(self):
address = str(self.lineEditAddress.text())
if address:
if address.find('://') == -1:
address = 'http://' + address
self.lineEditAddress.setText(address)
url = QUrl(address)
self.webView.load(url) if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
mb = MyBrowser()
mb.show()
sys.exit(app.exec_())

gpsPoint.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{width: 100%;height: 100%;margin:0;font-family:"微软雅黑";}
#allmap{height:100%;width:100%;}
#r-result{width:100%; font-size:14px;}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=mbGq5Dh8rUKhnzP6VbB0g1izAsyUjGab"></script>
<title>经纬度定位</title>
</head>
<body>
<div id="allmap"></div>
<!--<div id="r-result">-->
<!--经度: <input id="longitude" type="text" style="width:100px; margin-right:10px;" />-->
<!--纬度: <input id="latitude" type="text" style="width:100px; margin-right:10px;" />-->
<!--<input type="button" value="查询" onclick="theLocation()" />-->
<!--</div>-->
</body>
</html>
<script type="text/javascript">
// 百度地图API功能
var map = new BMap.Map("allmap");
map.centerAndZoom(new BMap.Point(112.424483,34.640631), 15);//洛浦公园坐标
map.enableScrollWheelZoom(true); //新建定位标准
<!--theNewLocation(112.424483,34.640631);--> // 用经纬度设置地图中心点
function theNewLocation(x,y){
alert('测试');
if(1){
map.clearOverlays();
var new_point = new BMap.Point(x,y);
var marker = new BMap.Marker(new_point); // 创建标注
map.addOverlay(marker); // 将标注添加到地图中
map.panTo(new_point); //增加定位信息标注
map.centerAndZoom(new_point, 15);
var opts = {
width : 50, // 信息窗口宽度
height: 50, // 信息窗口高度
title : "我的最新位置" , // 信息窗口标题
enableMessage:true,//设置允许信息窗发送短息
message:"我就在这里哦~~~~"
}
var infoWindow = new BMap.InfoWindow("我确实就在这里!!!", opts); // 创建信息窗口对象
marker.addEventListener("click", function(){
map.openInfoWindow(infoWindow,new_point); //开启信息窗口
});
}
} </script>

python调用html内的js方法的更多相关文章

  1. Python调用C/C++的种种方法

    Python调用C/C++的种种方法 2010-12-07 09:59 28433人阅读 评论(1) 收藏 Python是解释性语言, 底层就是用c实现的, 所以用python调用C是很容易的, 下面 ...

  2. Python调用C/C++动态链接库的方法详解

    Python调用C/C++动态链接库的方法详解 投稿:shichen2014 这篇文章主要介绍了Python调用C/C++动态链接库的方法,需要的朋友可以参考下 本文以实例讲解了Python调用C/C ...

  3. Python子类调用父类内属性的方法

    常见的就是初始化方法__init__() python中类的初始化方法是__init__(),因此父类子类的初始化方法都是这个,如果子类不实现这个函数,初始化时调用父类的初始化函数,如果子类实现这个函 ...

  4. JS 互相调用iframe页面中js方法、VUE里 iframe 互调方法

    1,父 html 调用子 iframe 内方法: document.getElementById("iframe").contentWindow.func(data1,data2. ...

  5. 第8.18节 Python类中内置析构方法__del__

    一. 引言 基本上所有支持OOP设计的语言都支持析构方法(也称析构函数),析构方法都是在对象生命周期结束时调用,一般用来实施实例相关生命周期内访问数据的扫尾工作,包括关闭文件.释放内存.输出日志.清理 ...

  6. python 调用shell命令三种方法

    #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器: #!/usr/bin/env python这种用法是为了防止操作系统用户没有将pyth ...

  7. python - 类的内置 attr 方法

    类的内置 attr 方法 #类的内置 attr 方法: # __getattr__ # __setattr__ # __delattr__ # __getattr__ #到调用一个类不存在数参数时,将 ...

  8. 二级域名相同的情况下子页面调用父页面的js方法

    这两天项目遇到这种需求.项目是一个平台级系统,其中嵌入了多款应用.在平台上可以使用这些应用操作业务. 现在产品提出了个需求:即在A应用中需要调用js方法来打开B应用. 处理方法是:平台js中给出个打开 ...

  9. Layer获取iframe的dom元素及调用iframe页的js方法

    1. 父页面点击第一个按钮触发,获取子页面中的body元素,调用子页面中定义的js方法 yes : function(index,layero){ //获取iframe的body元素 var body ...

随机推荐

  1. activiti自己定义流程之整合(三):整合自己定义表单创建模型

    本来在创建了表单之后应该是表单列表和预览功能.可是我看了看整合的代码,和之前没实用angularjs的基本没有什么变化,一些极小的变动也仅仅是基于angularjs的语法,因此全然能够參考之前说些的表 ...

  2. hdu1584 A strange lift (电梯最短路径问题)

    A strange lift Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  3. 实时竞价(RTB) 介绍(基础篇)

    前言: 说到"实时竞价"大家一定都不陌生,那么为何如今实时竞价发展这么迅猛,当然这个主要得益于总体移动互联网环境的成熟,以及中国本地移动广告市场出现爆发式增长.那么到底什么是实时竞 ...

  4. Unity3d中使用自带动画系统制作下雨效果(二)

    接着昨天的(一),今天上下雨效果的后半部分.在最后附上网盘链接,有使用的素材及本次的工程源文件,想看看的童鞋可以下载~~ 下雨效果分两部分:地上的涟漪和空中的雨滴.那么现在就开始,是使用unity3d ...

  5. java中JSONObject与JSONArray的使用

    JSONObject与JSONArray 最近在学习过程中用到了稍微复杂点的json数据需要将json数据解析出来,这里就截取一部分作为例子 1.JSONObject介绍 JSONObject-lib ...

  6. ffmpeg中的x264编码选项,对应关系

    )’ Disabled. ‘variance (1)’ Variance AQ (complexity mask). ‘autovariance (2)’ Auto-variance AQ (expe ...

  7. plsql programming 09 数字

    number 类型, 十进制数据类型(平台无关的) pls_integer 和 binary_integer 这两种数据类型和你底层硬件表示整数的方法完全一致, 这两种类型的运算是利用硬件原生, 机器 ...

  8. Java基础01 从HelloWorld到面向对象(转载)

    Java是完全面向对象的语言.Java通过虚拟机的运行机制,实现“跨平台”的理念. "Hello World!" public class HelloWorld{    publi ...

  9. HTML 网页中以超链接的方式调用iphone 手机的app

    2011-11-13 14:36:33|  分类: 随笔 |  标签:iphone  调用iphone手机app  |举报|字号 订阅     <1>. 调用iphone 手机地图APP的 ...

  10. Easyui Datagrid扩展fixRownumber方法

    首先,从datagrid生成的代码,我们可以发现,在rowNumber上都有特定的class标记,datagrid-cell-rownumber,datagrid-header-rownumber. ...