Неправильный рендеринг Javascript с помощью PyQt5 QWebEngine

Я создаю браузер с использованием PyQt5. Это довольно большой код, но это основная проблема, с которой я сталкиваюсь. Код такой:

import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtWidgets import QApplication, QMainWindow

app = QApplication(sys.argv)

web = QWebEngineView()
file = open("example.html", "r")
html = file.read()
web.setHtml(html)
file.close()
web.show()

sys.exit(app.exec_())

Проблема в том, что рендеринг довольно странный.Изображение рендеринга здесь. содержимое файла example.html:

<!DOCTYPE html>
<head><title>JS Example</title></head>
<h1>JS example</h1>
<p><button type = 'button' onclick = "document.getElementById('tobeshown').style.display='block'">Show hidden parts of this page</button></p>
<p id = 'tobeshown' style = "display:none">
Peekaboo!
</p>
<p>
<button type = 'button' onclick="document.getElementById('tobeshown').style.display='none'">Hide it!</button>
</p>
</body>
</html>

Ожидаемый результат (в браузере Mozilla Firefox): здесь

Может ли кто-нибудь сказать мне, почему механизм рендеринга PyQt5 создает эти символы вверху? И что я могу сделать, чтобы решить это? Большое спасибо.


person Nobody    schedule 25.10.2019    source источник
comment
Проверьте свой HTML, кажется, он не работает: </button><p>должно быть </button></p>?!   -  person Maurice Meyer    schedule 25.10.2019
comment
Извините @MauriceMeyer, который по-прежнему выдает тот же результат. Спасибо, что указали.   -  person Nobody    schedule 25.10.2019
comment
Открывающий тег ‹body› также отсутствует, исправьте все ошибки разметки, и он будет работать как положено :)   -  person Maurice Meyer    schedule 25.10.2019
comment
@MauriceMeyer кажется, что проблема связана с чтением файла Python, а не с рендерингом. Когда я добавляю строку print(html), она выводит <!Doctype html> и так далее.   -  person Nobody    schedule 25.10.2019
comment
Как я уже сказал, HTML не работает, поэтому удалите оттуда «скрытые» символы Юникода или попробуйте сохранить HTML как ASCII. Это не (настоящие) ошибки Python, PyQt5 или webkit.   -  person Maurice Meyer    schedule 25.10.2019
comment
Большое спасибо! Я изменил кодировку файлов на UTF-8, и она отлично работает. Вы могли бы сделать это ответом, и я мог бы принять его.????   -  person Nobody    schedule 25.10.2019


Ответы (1)


Таким образом, проблема заключается не в рендеринге WebEngine, а в чтении файла Python. Изменение кодировки файла на UTF-8 решило проблему для меня.

person Nobody    schedule 25.10.2019