Currently, I want to set value for html using runJavaScript
.
The following code works:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *
class Widget(QWidget):
def __init__(self):
super().__init__()
lay = QVBoxLayout()
self.btn = QPushButton('change html value')
self.browser = QWebEngineView()
lay.addWidget(self.btn)
lay.addWidget(self.browser)
self.setLayout(lay)
self.browser.setHtml(
'''
<html>
<head>
<title>My Page</title>
</head>
<body>
<h1 id="welcome">Welcome to my page!</h1>
<h1 id="value"> 0 </h1>
</body>
</html>
'''
)
self.btn.clicked.connect(self.btnClickSlot)
def btnClickSlot(self, check=False):
self.browser.page().runJavaScript('document.getElementById("value").innerHTML = "1"')
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Widget()
win.show()
app.exec_()
The value changes from 0 to 1 after click the change html value
button.
But, I don’t want to trigger the operation by click
. I want to directly change the value.
And the modified code is:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *
class Widget(QWidget):
def __init__(self):
super().__init__()
lay = QVBoxLayout()
self.btn = QPushButton('change html value')
self.browser = QWebEngineView()
lay.addWidget(self.btn)
lay.addWidget(self.browser)
self.setLayout(lay)
self.browser.setHtml(
'''
<html>
<head>
<title>My Page</title>
</head>
<body>
<h1 id="welcome">Welcome to my page!</h1>
<h1 id="value"> 0 </h1>
</body>
</html>
'''
)
self.browser.page().runJavaScript('document.getElementById("value").innerHTML = "1"')
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Widget()
win.show()
app.exec_()
The value don’t change as I expect.
How can I directly change the value? Any suggestion is appreciated~~~