Install & Compatibility
Where this runs
tested against v6.11.2 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.95 runs
build_error
glibcpy 3.10–3.95 runs
installs and imports cleanly · install 6.8s · import 0.000s · 544MB
540MB installed
● package 540MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
QWebEngineView
✓ from PyQt6.QtWebEngineWidgets import QWebEngineView
✗ from PyQt6.QtWidgets import QWebEngineView
In PyQt6, WebEngine components are in a dedicated submodule, not directly under QtWidgets or the main PyQt6 namespace.
QWebEnginePage
✓ from PyQt6.QtWebEngineCore import QWebEnginePage
✗ from PyQt6.QtWebEngineWidgets import QWebEnginePage
Many core WebEngine classes, including QWebEnginePage, moved from QtWebEngineWidgets to QtWebEngineCore in Qt6.
QUrl
✓ from PyQt6.QtCore import QUrl
This quickstart demonstrates how to embed a basic web browser using `QWebEngineView` to display a URL. It initializes a `QApplication`, creates a `QWidget` to host the `QWebEngineView`, and sets a target URL. The `sys.exit(app.exec())` line starts the event loop, displaying the window.
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout
from PyQt6.QtWebEngineWidgets import QWebEngineView
from PyQt6.QtCore import QUrl
class SimpleBrowser(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('PyQt6 WebEngine Browser')
self.setGeometry(100, 100, 1024, 768)
layout = QVBoxLayout(self)
self.webview = QWebEngineView()
layout.addWidget(self.webview)
# Load a URL (e.g., Google or your own site)
self.webview.setUrl(QUrl('https://www.google.com'))
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
browser = SimpleBrowser()
browser.show()
sys.exit(app.exec())
Debug
Known issues
breakingWhen migrating from PyQt5, the import structure for WebEngine classes has changed. Classes are now strictly separated into `PyQt6.QtWebEngineWidgets` (for widgets like `QWebEngineView`) and `PyQt6.QtWebEngineCore` (for core functionalities like `QWebEnginePage`, `QWebEngineProfile`). Direct imports from the main `PyQt6` namespace or `QtWidgets` for WebEngine components will fail.fixUpdate import statements: `from PyQt5.QtWebEngineWidgets import X` becomes `from PyQt6.QtWebEngineWidgets import X`, and `QWebEnginePage` (and similar core classes) should be imported from `PyQt6.QtWebEngineCore`.
affects: All PyQt6 versions when migrating from PyQt5.
breakingSeveral Qt WebEngine API methods have moved or changed signatures in Qt 6. For example, `QWebEnginePage::print()` no longer takes a callback and has moved to `QWebEngineView::print()`, signalling completion with `QWebEngineView::printFinished()`. Similarly, `QWebEngineDownloadItem` has been renamed to `QWebEngineDownloadRequest` and moved to `QtWebEngineCore`.fixConsult the official Qt 6 WebEngine documentation and PyQt6 examples for updated method calls and class locations. Refactor code to use new signals/slots and class names.
affects: All PyQt6 versions when migrating from PyQt5/Qt5 WebEngine.
gotchaThe method to start the application's event loop has changed from `app.exec_()` (used in older Python 2 compatible PyQt5 code) to `app.exec()` in PyQt6. While `app.exec()` is also available and preferred in modern PyQt5, using `app.exec_()` will raise an error in PyQt6.fixAlways use `app.exec()` to start the application's event loop.
affects: All PyQt6 versions.
gotchaQWebEngineView does not automatically handle pop-up windows (e.g., those created by JavaScript `window.open()`). To support these, you must subclass `QWebEngineView` and reimplement its `createWindow()` method.fixCreate a custom `QWebEngineView` subclass and override `createWindow()` to instantiate and return a new `QWebEngineView` (or a custom `WebPopupWindow`) for each new window request.
affects: All PyQt6-WebEngine versions.
gotchaUsers have reported performance issues such as laggy scrolling and jerky videos with specific Qt WebEngine versions (e.g., Qt 6.7.0-1) on certain platforms, particularly Linux/X11, and sometimes involving specific GPU drivers. This may manifest as 'glitching' or 'Z-fighting'.fixIf encountering severe performance issues, try downgrading the `PyQt6-WebEngine-Qt6` package (or `PyQt6-WebEngine`) to an earlier minor version if possible. Report issues to the PyQt or Qt bug trackers, providing detailed system and GPU information. Disabling hardware acceleration might be a workaround in some cases.
affects: Specific versions of Qt WebEngine (e.g., 6.7.x) and associated PyQt6-WebEngine releases.
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'PyQt6.QtWebEngineWidgets'
The `PyQt6-WebEngine` package, which provides the `QtWebEngineWidgets` module and depends on `pyqt6-webengine-qt6`, is not installed in your Python environment.
fixInstall the `PyQt6-WebEngine` package using pip: `pip install PyQt6-WebEngine`
ImportError: DLL load failed while importing QtWebEngineCore: The specified module could not be found.
On Windows, this often indicates that required Visual C++ Redistributable runtime components are missing or that the native Qt WebEngine DLLs provided by `pyqt6-webengine-qt6` are not found or are corrupted.
fixInstall the latest Microsoft Visual C++ Redistributable for your system (usually x64) and ensure `PyQt6-WebEngine` is properly installed, possibly by reinstalling it.
qt.webenginecore: "Could not find QtWebEngineProcess.exe"
The application cannot locate or execute the necessary `QtWebEngineProcess` executable, which is provided by `pyqt6-webengine-qt6` and is crucial for rendering web content.
fixVerify that `PyQt6-WebEngine` is fully and correctly installed. For deployed applications, ensure that `QtWebEngineProcess.exe` (on Windows) and the `webengine` plugins directory are present in the application's distribution.
Failed to load platform plugin "qtwebengine"
The application is unable to load the Qt WebEngine platform plugin, which means the necessary native components (DLLs/shared libraries) provided by `pyqt6-webengine-qt6` are either missing, inaccessible, or incompatible.
fixEnsure `PyQt6-WebEngine` is correctly installed. For deployment, ensure the `platforms` and `webengine` plugin directories are correctly bundled with your application alongside the executable.
Upgrade
Version history
6.11.2latest on PyPI · released Aug 23, 2026
Audit
Dependencies
PyQt6requiredPyQt6-WebEngine is built on top of PyQt6, and this package provides the Qt runtime components for it.