3
我有以下代碼:
HTML + JavaScript的evaluateJavaScript()只能使用一次
<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)
只適用於第一次。
有沒有其他人有同樣的問題?
我有同樣的問題,需要推高 – lithiium
我用PyQt4和程序崩潰測試了你的代碼。當你運行它時,這也會發生嗎? – ProgrammingIsAwsome