QWebEngineView 網頁顯示的元件,適用於在應用程序中嵌入網頁,他除裡可以顯示網頁外,也可以操作網頁的內容。
QWebEngineView()
: 用來創建網頁顯示的元件。setUrl(QUrl | str)
: 設定要加載的網址,先將網址放入 QUrl
對象,在設定到 setUrl
。以下範例直接加載 google 網站的網址。from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout
from PySide6.QtWebEngineWidgets import QWebEngineView
from PySide6.QtCore import QUrl
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(100, 100, 1000, 500)
# 創建 QWebEngineView 並加載 URL
self.web = QWebEngineView()
self.web.setUrl(QUrl("https://www.google.com"))
# 設置主視窗布局
layout = QVBoxLayout()
layout.addWidget(self.web)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
除了加載網頁 URL , QWebEngineView
也可以加載本地的網頁文件。
from PySide6.QtCore import QUrl, QDir
from PySide6.QtWidgets import QApplication , QVBoxLayout, QWidget
from PySide6.QtWebEngineWidgets import QWebEngineView
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("加載 HTML 字符串")
self.setGeometry(100, 100, 1000, 500)
# 創建 QWebEngineView 並加載本地 HTML 文件
self.web = QWebEngineView()
path = QDir.current().filePath("test.html")
self.web.setUrl(QUrl(path))
# 設置主視窗布局
layout = QVBoxLayout()
layout.addWidget(self.web)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
QWebEngineView
也可以直接加載 HTML 字串 , 不用透過加載 URL 和 文件使用。使用 setHtml
from PySide6.QtWidgets import QApplication , QVBoxLayout, QWidget
from PySide6.QtWebEngineWidgets import QWebEngineView
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("加載 HTML 字符串")
self.setGeometry(100, 100, 1000, 500)
# 創建 QWebEngineView 並加載 HTML 字符串
self.web = QWebEngineView()
html_content = """
<html>
<body><h1>加載 HTML</h1></body>
</html>
"""
self.web.setHtml(html_content) # 加載 HTML
# 設置主視窗布局
layout = QVBoxLayout()
layout.addWidget(self.web)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
loadFinished.connect(function)
: 網頁載入完成後會觸發。,下面是當網也載入完成後,會列印 「載入完成」。from PySide6.QtCore import QUrl, QDir
from PySide6.QtWidgets import QApplication , QVBoxLayout, QWidget , QPushButton
from PySide6.QtWebEngineWidgets import QWebEngineView
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("加載 HTML 字符串")
self.setGeometry(100, 100, 1000, 500)
# 創建 QWebEngineView 並加載本地 HTML 文件
self.web = QWebEngineView()
self.web.setUrl(QUrl("https://www.google.com"))
self.web.loadFinished.connect(lambda: print("載入完成"))
# 設置主視窗布局
layout = QVBoxLayout()
layout.addWidget(self.web)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
load(Qurl)
: 載入網頁 。reload()
: 重新整理。forward()
: 前一頁。back()
: 後一頁。selectedText()
: 返回所選取的文字。下面範例是當按下按鈕後,會返回選取的文字。from PySide6.QtCore import QUrl
from PySide6.QtWidgets import QApplication , QVBoxLayout, QWidget , QPushButton
from PySide6.QtWebEngineWidgets import QWebEngineView
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("加載 HTML 字符串")
self.setGeometry(100, 100, 1000, 500)
self.btn = QPushButton("列印所選文字")
self.btn.clicked.connect(lambda: print(self.web.selectedText()))
# 創建 QWebEngineView 並加載本地 HTML 文件
self.web = QWebEngineView()
self.web.setUrl(QUrl("https://www.google.com"))
# 設置主視窗布局
layout = QVBoxLayout()
layout.addWidget(self.web)
layout.addWidget(self.btn)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
功能 | 方法 |
---|---|
創建元件 | QWebEngineView() |
設定加載網址 | setUrl(QUrl |
功能 | 方法 |
---|---|
載入完成時觸發 | loadFinished.connect(function) |
功能 | 方法 |
---|---|
載入網頁 | load(QUrl) |
重新整理 | reload() |
前一頁 | forward() |
後一頁 | back() |
返回所選文字 | selectedText() |