在PyQt5和PyQt6中,QWebEnginePage
类已经不再包含mainFrame
属性,因此在调用mainFrame
属性时会出现AttributeError
错误。
如果你需要获取WebView中的主框架,可以使用QWebEnginePage
类中的runJavaScript()
方法来执行JavaScript代码,然后在JavaScript代码中使用window.top
属性来获取主框架。例如:
from PyQt6.QtCore import QUrl
from PyQt6.QtWebEngineWidgets import QWebEngineView
from PyQt6.QtWidgets import QApplication
app = QApplication([])
view = QWebEngineView()
view.load(QUrl("https://www.baidu.com"))
def on_load_finished():
frame = view.page().runJavaScript("window.top").toVariant()
print(frame)
view.loadFinished.connect(on_load_finished)
view.show()
app.exec()
在这个示例中,我们使用runJavaScript()
方法执行了一个简单的JavaScript代码window.top
,该代码返回WebView中的主框架。然后我们在on_load_finished()
函数中获取了JavaScript代码的返回值,并打印出来。
需要注意的是,runJavaScript()
方法是异步执行的,因此你需要在loadFinished
信号的槽函数中调用它,以确保WebView已经加载完成。