【发布时间】:2013-12-31 04:45:44
【问题描述】:
我有以下代码:
HTML + JavaScript
<style type="text/css">
.color1{
color: #3D8BD0;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<body>
<div id="mensagem">Mensage</div>
<script>
$("#mensagem").click(function( event ) {
printer.text('Hello');
});
</script>
</body>
还有.py文件:
# -*- coding:utf-8 -*-
import sys
from PySide.QtCore import Slot, QObject, QUrl
from PySide.QtGui import QApplication
from PySide.QtWebKit import QWebView
from threading import Timer
class Dac(QObject):
def __init__(self, parent=None):
super(Dac, self).__init__(parent)
self.defultMsg = "default"
self.app = QApplication(sys.argv)
self.view = QWebView()
self.view.resize(445, 791)
self.view.load(QUrl("./page.html"))
self.frame = self.view.page().mainFrame()
self.frame.addToJavaScriptWindowObject('printer', self)
self.view.show()
self.app.exec_()
sys.exit(self.app.exec_())
def changeText(self, mensagem):
print mensagem
self.frame.evaluateJavaScript(mensagem)
@Slot(str)
def text(self, message):
print message
strm = '$("#mensagem").html("'+message+'").addClass("color1");'
self.changeText(strm) #this change the text
t = Timer(6.5, self.timeoff)
t.start()
def timeoff(self):
strm = '$("#mensagem").html("'+self.defultMsg+'").removeClass("color1");'
self.changeText(strm) #this don't change
print "debug"
dac = Dac()
当我运行 Python 文件时,窗口会打开并显示 HTML 页面,然后当我单击 div“mensagem”时,文本只会更改一次。
所以我认为我的问题是声明 self.frame.evaluateJavaScript(mensagem) 仅在第一次有效。
还有其他人有同样的问题吗?
【问题讨论】:
-
我也有同样的问题,需要顶一下
-
我已经用 PyQt4 测试了你的代码并且程序崩溃了。运行时也会出现这种情况吗?
标签: javascript python pyqt pyside qwebview