如何解决 Pyqt5 create web browser when load html crash
how to solve Pyqt5 create web browser when load html crash
我用 PyQt5 创建了一个网络浏览器,如果我加载 url="http://www.google.com" 没有任何问题,但是如果我加载 url = "http://192.168.0.106/get.html" ,运行 代码,小部件崩溃。
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
"""docstring for MainWindow"""
def __init__(self, *arg,**kwargs):
super(MainWindow, self).__init__(*arg,**kwargs)
self.setWindowTitle("Load huobi exchange bar")
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("http://192.168.0.106/get.html"))
self.setCentralWidget(self.browser)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
下面是get.html
的内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>huobi exchange bar</title>
</head>
<body>
<!-- TradingView Widget BEGIN -->
<div class="tradingview-widget-container">
<div class="tradingview-widget-container__widget"></div>
<div class="tradingview-widget-copyright"><a href="https://cn.tradingview.com/crypto-screener/" rel="noopener" target="_blank"><span class="blue-text">sample</span></a>TradingView</div>
<script type="text/javascript" src="https://s3.tradingview.com/external-embedding/embed-widget-screener.js" async>
{
"width": 1100,
"height": 512,
"defaultColumn": "overview",
"defaultScreen": "general",
"market": "crypto",
"showToolbar": true,
"colorTheme": "dark",
"locale": "zh_CN"
}
</script>
</div>
<!-- TradingView Widget END -->
</body>
</html>
我的问题是:如何解决加载异步 js 时 window 崩溃?
我不明白为什么应用程序会损坏,因为即使 url 不存在,这也应该向您显示错误页面,所以如果您想了解错误的更多详细信息,您应该 运行 console/CMD.
中的代码
另一方面,您没有指明任何服务器执行 HTML,此外,没有必要使用“http://192.168.0.106”主机,只需将其作为本地文件加载即可:
├── get.html
└── main.py
import os
import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWebEngineWidgets import QWebEngineView
class MainWindow(QMainWindow):
"""docstring for MainWindow"""
def __init__(self, *arg, **kwargs):
super(MainWindow, self).__init__(*arg, **kwargs)
self.setWindowTitle("Load huobi exchange bar")
self.browser = QWebEngineView()
current_dir = os.path.dirname(os.path.realpath(__file__))
filename = os.path.join(current_dir, "get.html")
url = QUrl.fromLocalFile(filename)
self.browser.setUrl(url)
self.setCentralWidget(self.browser)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
我用 PyQt5 创建了一个网络浏览器,如果我加载 url="http://www.google.com" 没有任何问题,但是如果我加载 url = "http://192.168.0.106/get.html" ,运行 代码,小部件崩溃。
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
"""docstring for MainWindow"""
def __init__(self, *arg,**kwargs):
super(MainWindow, self).__init__(*arg,**kwargs)
self.setWindowTitle("Load huobi exchange bar")
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("http://192.168.0.106/get.html"))
self.setCentralWidget(self.browser)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
下面是get.html
的内容<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>huobi exchange bar</title>
</head>
<body>
<!-- TradingView Widget BEGIN -->
<div class="tradingview-widget-container">
<div class="tradingview-widget-container__widget"></div>
<div class="tradingview-widget-copyright"><a href="https://cn.tradingview.com/crypto-screener/" rel="noopener" target="_blank"><span class="blue-text">sample</span></a>TradingView</div>
<script type="text/javascript" src="https://s3.tradingview.com/external-embedding/embed-widget-screener.js" async>
{
"width": 1100,
"height": 512,
"defaultColumn": "overview",
"defaultScreen": "general",
"market": "crypto",
"showToolbar": true,
"colorTheme": "dark",
"locale": "zh_CN"
}
</script>
</div>
<!-- TradingView Widget END -->
</body>
</html>
我的问题是:如何解决加载异步 js 时 window 崩溃?
我不明白为什么应用程序会损坏,因为即使 url 不存在,这也应该向您显示错误页面,所以如果您想了解错误的更多详细信息,您应该 运行 console/CMD.
中的代码另一方面,您没有指明任何服务器执行 HTML,此外,没有必要使用“http://192.168.0.106”主机,只需将其作为本地文件加载即可:
├── get.html
└── main.py
import os
import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWebEngineWidgets import QWebEngineView
class MainWindow(QMainWindow):
"""docstring for MainWindow"""
def __init__(self, *arg, **kwargs):
super(MainWindow, self).__init__(*arg, **kwargs)
self.setWindowTitle("Load huobi exchange bar")
self.browser = QWebEngineView()
current_dir = os.path.dirname(os.path.realpath(__file__))
filename = os.path.join(current_dir, "get.html")
url = QUrl.fromLocalFile(filename)
self.browser.setUrl(url)
self.setCentralWidget(self.browser)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())