я следующий код:
HTML + JavaScriptevaluateJavaScript() работает только один раз
<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