# Web engine
The following renderers are used on each platform
Platform | Code | Renderer | Provider | Browser compatibility |
---|---|---|---|---|
GTK | gtk | WebKit | WebKit2 | |
macOS | WebKit | WebKit.WKWebView (bundled with OS) | ||
QT | qt | WebKit | QtWebEngine / QtWebKit | |
Windows | edgechromium | Chromium | > .NET Framework 4.6.2 and Edge Runtime installed | Ever-green Chromium |
Windows | edgehtml | EdgeHTML | > .NET Framework 4.6.2 and Windows 10 build 17110 | |
Windows | mshtml | MSHTML | MSHTML via .NET / System.Windows.Forms.WebBrowser | IE11 (Windows 10/8/7) |
Windows | cef | CEF | CEF Python | Chrome 66 |
On Windows renderer is chosen in the following order: edgechromium
, edgehtml
, mshtml
. mshtml
is the only renderer that is guaranteed to be available on any system. Note that Edge Runtime must be installed in order to use Edge Chromium on Windows. You can download it from here (opens new window). Distribution guidelines are found here (opens new window).
To change a default renderer set either PYWEBVIEW_GUI
environment variable or pass the rendered value to webview.start(gui=code)
function parameter. Check for available values in the Code column from the table above.
For example to use CEF on Windows
PYWEBVIEW_GUI=cef
or
import webview
webview.start(gui='cef')
If you wish to pass custom settings to CEF, refer to this example
To force QT on Linux systems
PYWEBVIEW_GUI=qt
or
import webview
webview.start(gui='qt')
# Known issues and limitations
# GTK WebKit2
- Versions of WebKit2 older than 2.2 has a limitation of 1000 characters of the Javascript result returned by
evaluate_js
.get_elements
is not supported for this reason.
# QtWebKit
- Debugging is not supported
# EdgeHTML
file://
URLs are not fully supported. While such URLs can be loaded, associated resources such as images or stylesheets cannot.- Destroying a window via
window.destroy()
and starting a new instance will crash the program. - Running the program under elevated privileges will throw an exception.
- Access to localhost URLs is restricted by default. To overcome this the LoopbackExempt settings are modified on pywebview launch, which triggers a UAC prompt. This only happens once and only if LoopbackExempt setting is not set. You can manually set this setting beforehand to avoid UAC:
checknetisolation LoopbackExempt -a -n="Microsoft.Win32WebViewHost_cw5n1h2txyewy"
(must be run as an admin).