Changelog | pywebview
Description: Build GUI for your Python program with JavaScript, HTML, and CSS

# # Changelog

## # 3.7

Released 04/11/2022

### # ⚡ Features

- [All] New `window.moved` event. Thanks @irtimir

### # 🚀 Improvements

- [EdgeChromium] Remove `The system cannot find the file specified - Microsoft Edge WebView2 Runtime Registry path: Computer\HKEY_CURRENT_USER\Microsoft\EdgeUpdate\Clients{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}` error message displayed in debug mode.
- [CEF] error.log is no longer deleted when in debug mode.

### # 🐞 Bug fixes

- [All] Fix `evaluate_js_async` crash and program termination prevention. Thanks @detritophage.
- [WinForms] Fix form initialization for pythonnet 3. Thanks @irtimir
- [CEF] Fix errorous script execution in `evaluate_js`, so that further script do not get stuck. Thanks @irtimir
- [CEF] Fix `master uid not found` error on startup.
- [QT] Remove 'Empty key passed' messages. Thanks @TomFryers
- [QT] PySide6 backend not working. Thanks @sbbosco
- [QT] Prevent 'Release of profile requested but WebEnginePage still not deleted. Expect troubles !' message on close. Thanks @sbbosco

## # 3.6.3

Released 05/04/2022

### # 🐞 Bug fixes

- [Winforms] Support for Edge Chromium v100. Thanks @greper.

## # 3.6.2

Released 05/03/2022

### # 🐞 Bug fixes

- [Cocoa] Fix closing window

## # 3.6.1

Released 16/02/2022

- `Fix` [CEF] Exception on start

## # 3.6

Released 15/02/2022

- `New` [All] Python 3.6 is the minimum supported version from now on.
- `New` [All] `minimized`, `maximized`, `restored`, `resized` events. Thanks @BillBridge for sponsorship.
- `New` [All] `evaluate_js` async support. `evaluate_js(code, callback)` can evaluate promises via an optional callback parameter.
- `New` [All] Events moved to its own `window.events` namespace (e.g. `window.loaded` → `window.events.loaded`). Old events are supported throughout 3.x and will be removed in 4.0.
- `New` [All] `window.resize(width, height, fix_point)` has now an optional parameter fix_point that controls in respect to which point the window is resized.
- `New` [All] MSHTML and EdgeHTML are deprecated. No further development will be done on these renderers.
- `New` [Winforms] Focus webview on start or window activate events.
- `New` [EdgeChromium] Custom user agent support.
- `New` [EdgeChromium] Window transparency support. Mouse and keyboards events are not supported in transparent. Thanks @odtian.
- `New` [CEF] Ability to pass custom CEF browser settings. Thanks @Rolf-MP.
- `Improvement` [EdgeChromium] Support non-elevated installations of WebView2. Thanks @ultrararetoad.
- `Improvement` [EdgeChromium] Better support for Edge Chromium runtime detectiom. Thanks @r-muthu-saravanan.
- `Improvement` [EdgeChromium] WebView2 runtime updated to
- `Improvement` [QT] Pyside support via PyQT wrapper. Thanks @tshemeng.
- `Fix` [Cocoa] Make Ctrl-C (SIGINT) work on Cocoa when running from the command line
- `Fix` [EdgeChromium] Fix `load_html. Thanks @sbbosco.
- `Fix` [Cocoa] Fix cancelling of closing the window in the closing event Thanks @fizzadar.
- `Fix` [QT] Fix simultaneous calls to JS API.
- `Fix` [GTK] Fix concurrency issues with get_size, get_position and get_current_url.

## # 3.5

Released 02/08/2021

- `New` [All] Get information about available screens via new `webview.screens` property.
- `New` [All] Per window localization. Thanks @fizzadar.
- `New` [All] Window closing can be cancelled by returning False from a closing event handler. #744.
- `Fix` [All] Debug mode cannot be set under certain conditions. #628
- `Improvement` [All] Selected web renderer printed in Python console in debug mode.
- `Improvement` [All] JS API serialization logic. Thanks @peter23
- `Improvement` [EdgeChromium] Chromium runtime updated to version 1.0.774.44. Thanks @sbbosco.
- `Improvement` [EdgeChromium] Custom user agent support.
- `Fix` [WinForms] Icon handling logic to make pywebview compatible with pystray. #720. Thanks @simonrob
- `Fix` [EdgeChromium] Change webview component to transparent. Thanks @ODtian
- `Fix` [CEF] Fix exception when destroying window
- `Fix` [Cocoa] cmd+w bypasses exit confirmation dialogue. #698. Thanks @fizzadar
- `Fix` [Cocoa] Fix window coordinate calculation logic when moving a window.
- `Fix` [MSHTML] Fix drag_region
- `Fix` [MSHTML] Fix window.alert

## # 3.4: Second wave

Released 04/12/2020

- `New` [Windows] WebView2 Chromium support. Thanks sbbosco
  (opens new window). #521
  (opens new window).
- `Fix` [All] Exception with HTML checkboxes and `get_elements`. #622
  (opens new window).
- `Fix` [All] pystray compatibility. Thanks AlexCovizzi
  (opens new window). #486
  (opens new window).
- `Fix` [All] expose methods instead of all callables for JS API objects. Thanks jgentil
  (opens new window). #629
  (opens new window).
- `Fix` [EdgeHTML] Make returning results of `evaluate_js` more robust. Thanks sbbosco
  (opens new window).
- `Fix` [QT] KDE_FULL_SESSION not being used. Thanks Maltzur
  (opens new window).
- `Fix` [Cocoa] Unicode filenames for input files.
- `Improvement` [Cocoa] Only install the specific `pyobjc` packages required. Thanks Fizzadar
  (opens new window).
- `Improvement` [Cocoa] Add support for default document navigation and window handling shortcut keys . Thanks ikhmyz
  (opens new window) and Fizzadar
  (opens new window)

## # 3.3.5

Released 26/09/2020

- `Fix` [EdgeHTML] Server middleware handling
- `Fix` [EdgeHTML] file:// url handling

## # 3.3.4

Released 18/09/2020

- `Fix` [EdgeHTML] Fix content not displaying with local URLs or local HTTP server
- `Fix` [Cocoa] Fixes arrow keys not responding in text input fields. Thanks awesomo4000
  (opens new window)

## # 3.3.3

Released 08/08/2020

- `Fix` [Cocoa] Save dialog not working #578
  (opens new window).
- `Fix` [Cocoa] Error sound being played when pressing keys on macOS #566
  (opens new window).

## # 3.3.2

Released 28/07/2020

- `Fix` [All] Load html triggers error - resolve_url() missing 1 required positional argument: 'should_serve' #562
  (opens new window).
- `Fix` [Cocoa/GTK] Access window size on closing #573
  (opens new window).
- `Fix` [GTK] Save file dialog now returns a string instead of a tuple.

## # 3.3.1

Released 01/07/2020

- `Fix` [WinForms] TypeError : 'str' value cannot be converted to System.Drawing.Color #560
  (opens new window).

## # 3.3: Detroit Edition

Released 29/06/2020

- `New` [All] Brand-new WSGI based internal HTTP server. Thanks @astronouth7303
  (opens new window).
- `New` [All] Transparent window. Not available on Windows.
- `New` [All] Allow pywebview window to be on top of other windows.
- `New` [All] Custom window drag region using CSS classes. Thanks @Fizzadar
  (opens new window).
- `New` [All] Custom user-agent support. Thanks @tognee
  (opens new window).
- `Fix` [All] Python function not triggered using JS #458
  (opens new window).
- `Fix` [All] window methods do not work in `loaded` event #528
  (opens new window).
- `Fix` [Cocoa] Caption bar and window control buttons are now hidden in frameless mode.
- `Fix` [CEF] CEF window resize hang #484
  (opens new window).
- `Fix` [MSHTML] Fix easy drag in frameless mode.
- `Fix` [EdgeHTML] Do not show admin prompt for non-local URLs.
- `Fix` [GTK] Fix threading issues with recentish versions of PyGObject
- `Fix` [QT] Fix opening web inspecting in debug mode

## # 3.2: Humate Edition

Released 24/01/2020

- `New` [All] Window x, y, width and height properties to retrieve coordinates and dimensions of the window. Thanks @Fizzadar
  (opens new window)
- `New` [All] `window.expose(func)` an ability to expose an arbitrary function to the JS realm, also during the runtime.
- `Improvement` [All] JS API methods can now accept an arbitrary number of arguments
- `Improvement` [All] Exceptions thrown in a JS API method is now raised in Javascript via its promise.
- `Improvement` [All] Exceptions thrown in window event handlers are now caught and logged.
- `Improvement` [All] Random port assigned by the built-in HTTP server can be retrieved via `webview.http_server.port`
- `Improvement` [QT] Microphone/webcam are enabled by default. Thanks @dtcooper
  (opens new window)
- `Improvement` [QT] Default debugger port is changed to 8228. Thanks @melvinkcx
  (opens new window)
- `Improvement` [CEF] Ability to pass custom CEF settings via `webview.platforms.cef.settings`. See example for details.
- `Fix` [All] Built-in HTTP server is properly restarted when using `window.load_url`
- `Fix` [Cocoa] New window position is correctly calculated when using `window.move`
- `Fix` [EdgeHTML] `window.alert` fix

## # 3.1: Windows Edition

Released 04/11/2019

- `New` [All] Window minimize/restore functionality. Ability to show window minimized on startup.
- `New` [All] Window hide/show functionality. Ability to show window hidden on startup.
- `New` [All] Window move functionality. Ability to set window coordinates on startup. Thanks @adbenitez.
- `New` [All] New `window.pywebviewready`DOM event that is thrown when `window.pywebview` is available.
- `New` [All] Links opened via `window.open` are opened in a new browser window.
- `Fix` [All] Fix concurrent invocations of JS API functions.
- `Fix` [All] Fix unescaped single quote in JS API calls.
- `Fix` [All] Built-in HTTP server is now multi-threaded. This fixes stalling HTTP requests in some cases.
- `Improvement` [All] `window.set_window_size` is deprecated in favour to `window.resize`.
- `Improvement` [All] Exceptions are now handled in JS API functions and rerouted to the function promise catch method.
- `Improvement` [All] Suppress built-in HTTP server logging. Logging is active only in the debug mode.
- `Fix` [CEF] Fix deadlock occurring when trying to access `window.pywebview` object right after the window is created.
- `Fix` [CEF] High DPI fix resulting in a small window appearing inside the main window,
- `Fix` [EdgeHTML] Unicode error when loading HTML.
- `Fix` [MSHTML] `get_elements` failing.
- `Fix` [MSHTML] `console.log` not writing to Python console in debug mode.
- `Fix` [MSHTML] Forcing MSHTML via `gui=mshtml` is now possible. ¯\_(ツ)_/¯

## # 3.0.2

Released 17/08/2019

- `Fix` [All] Prevent JSON like strings being converted to JSON objects when returning JS API calls. #352
- `Fix` [Windows] HTTP server is now used by default for local URLs and HTML for EdgeHTML. This fixes a PermissionDenied error, when the directory the executable is in is not writable.
- `Fix` [Tests] Tests now fail on an exception occurring in a thread.

## # 3.0.1

Released 25/07/2019

- `Fix` [All] Don't escape line breaks in result of js_bridge_call. Thanks @kvasserman.
- `Fix` [Windows] Support for Pyinstaller noconsole mode
- `Fix` [Windows] Fix Windows version detection with frozen executables.
- `Fix` [Windows] Open folder dialog now supports `directory` argument.
- `Fix` [QT] Workaround for segmentation fault on closing the main window. Thanks @kvasserman.
- `Fix` [Pytest] Fix for pytest warning about invalid escape sequence

## # 3.0

Released 11/07/2019

- `New` [All] New API. The API is not compatible with older versions of pywebview. See https://pywebview.flowrl.com for usage details. #272
- `New` [All] Built-in HTTP server. #260
- `New` [All] Autogenerated CSRF token exposed as `window.pywebview.token`. #316
- `New` [All] `get_elements` function to retrieve DOM nodes. #292
- `New` [All] New events system that lets you to subscribe to events. `loaded` and `shown` events are implemented. #201
- `New` [Windows] EdgeHTML support. Thanks @heavenvolkoff. #243
- `Fix` [Windows] Fullscreen mode. #338
- `Fix` [GTK] Better Javascript support for recent version of WebKit2
- `Fix` [CEF] Support for PyInstaller in onefile mode

## # 2.4

Released 17/02/2019

- `New` [All] Support for frameless windows.
- `Fix` [Windows] Fix broken installation of v2.3

## # 2.3

Released 12/02/2019

- `New` [All] Ability to resize window after creation `webview.set_window_size(width, height)`. Thanks @aprowe #274
- `New` [Windows] Chrome Embedded Framework (CEF) support #15
- `Improvement` [All] pywebview does not interfer with Python's logger configuration #295
- `Fix` [All] Empty DOM issues when window is created without a URL #285
- `Improvement` [macOS] Web renderer upgraded to WKWebView
- `Improvement` [macOS] Add support for Mojave dark mode
- `Fix` [macOS] Problem with handling paths containing spaces #283
- `Fix` [QT] Better support for QTWebKit and QTWebChannel #304
- `Improvement` [QT] Remove support for QT4
- `Fix` [GTK] Thrown exception not Python 2 compatible #277

## # 2.2.1

Released 24/10/2018

- `Fix` Dependency installation
- `New` Reintroduce [qt] extra require switch

## # 2.2

Released 23/10/2018

- `New` Brand new documentation at https://pywebview.flowrl.com
- `Improvement` Simplify installation. Now pywebview can be installed by `pip install pywebview`. Dependencies will be resolved and installed automatically
- `Improvement` [GTK] Update to WebKit2

## # 2.1

Released 16/09/2018

- `New` [All] Introduce `PYWEBVIEW_GUI` environment variable and `webview.config.gui` property. Acceptable values are are `qt`, `gtk` and `win32`. `USE_QT` and `USE_WIN32` is deprecated.
- `Fix` [Cocoa] Closing main window does not result in program termination
- `Fix` [All] New main window re-creation after closing. #229
- `Fix` [QT] Debug mode #233
- `Fix` [Cocoa/Windows] Preserve JS API on page reload
- `Fix` [Windows] `toggle_fullscreen()` function #232. Thanks @lt94
- `Fix` [Windows] `load_css()` function. Thanks @wormius.

## # 2.0.3

Released 16/05/2018

- `Fix` [QT] Fix a deadlock preventing QT implementation from starting
- `Fix` [QT] QT is set to default on QT-based systems

## # 2.0.1/2.0.2

Released 08/05/2018

- `Fix` [Winforms] Fix installation of dlls

## # 2.0

Released 28/04/2018

- `New` [All] Multi-window support
- `New` [All] Ability to call Python code from Javascript via `window.pywebview.api`
- `New` [All] Debug mode. Web inspector for Cocoa/GTK/QT and basic debug information for WinForms.
- `New` [All] File filter support in `create_file_dialog`
- `New` [All] `target='_blank'` links are now opened in an external browser
- `New` [All] Change window title via a `set_title` function #159
- `New` [All] `load_css` function
- `New` [All] Support for relative local URLs in `create_window` / `load_html`. Linked local resources are resolved as well. #186
- `New` [All] `todos` example app demonstrating js api and relative local URLs.
- `New` [All] Text select in the webview window is disabled by default. Added `text_select` argument to `create_window` function.
- `New` [QT] OpenBSD 6.x support #213. Thanks @hucste.
- `Fix` [All] `base_uri` parameter of `load_html` defaults to the directory of the entry script
- `Fix` [All] Consistent return types with `evaluate_js` across different platforms #175
- `Fix` [All] Various concurrency issues and deadlocks
- `Fix` [Winforms] Hide `Message from webpage` when using `alert` Javascript function #150
- `Fix` [Winforms] Support for high DPI #179
- `Fix` [QT] Support for QT 5.10 #171. Thanks @adbenitez
- `Fix` [QT] Deprecate QT4. Starting from this version new features won't be tested on QT4 and support will be removed in the future.

## # 1.8

Released 29/10/2017

- pywebview has the official logo
- @shivaprsdv is now an official maintainer of the project
- `New` [All] Add an ability to run Javascript code using `evaluate_js` function
- `Fix` [Cocoa] Implement missing webview components (file input dialog, alert()/confirm() JS functions)
- `Fix` [Winforms] Fix issue with non-responsive UI when a loading screen background color is used
- `Fix` [Winforms] Add support for Del and Ctrl+A keys in input elements.
- `New` [QT] QT5 is now prefererred over QT4
- `Fix` [QT] Fix return parameters of `create_file_dialog` to have the same format as on other platforms
- `Fix` [GTK] Better threading model. Thanks to @jorants #121

## # 1.7

Released 08/06/2017

- `New` [All] Add a basic test suite and continuous integration. #88
- `New` [All] Add a background_color parameter to create_window, which specifies the default color of the webview window. Refer to examples/loading_indicator.py for example use. Thanks to @shivaprsdv. #90
- `New` [Cocoa] Disable backspace navigation. Thanks to @shivaprsdv. #102
- `New` [Cocoa] Implementation of window.print() and window.confirm method. Thanks to @shivaprsdv. #97
- `Fix` [Cocoa] Fix non-existing localization string in save file dialog
- `New` [Winforms] Disable all the shortcut keys of web navigation
- `Fix` [Winforms] Fix load_html failing sometimes due thread violation
- `Fix` [GTK] Implement fall-through to QT, when GTK is present, but not GTK.WebKit.

## # 1.6

Released 29/03/2017

- `New` [All] Quit confirmation dialog #31
- `New` [All] webview.config can be used using the dot notation (ie. webview.config.use_win32 = True)
- `New` [Winforms] Disable context menu
- `Fix` [Winforms] Application icon is now visible in the application window when frozen with PyInstaller #91
- `Fix` [Mac] load_html() is invoked as soon as the webview is ready #93
- `Fix` [QT] get_current_url() not working due a typo. Thanks @maroc81. #85
- `Fix` [GTK] Better exception handling when GTK is not found #94
- `Fix` [GTK] destroy_window() #95

## # 1.5

Released 09/02/2017

- `New` [All] toggle_fullscreen function #52
- `New` [All] get_current_url function #76
- `New` [Winforms] Javascript errors are now suppressed
- `Fix` [Winforms] Fixed resizable=False not being enforced #73

## # 1.4

Released 14/01/2017

- `New` [All] pip installation now supports choosing what dependencies to install. See README for more information. Thanks @josePhoenix
- `New` [All] Localization support. Refer to `examples/localization.py` for an example use
- `New` [Mac] QT5 support
- `Fix` [Windows] File dialogs are now attached to the main window
- `Fix` [Windows] Pyinstaller crash issue with an icon in Windows Forms

## # 1.3

Released 31/10/2016

- `New` [Cocoa] Added View -> Fullscreen standard menu item. Thanks to @bastula.
- `New` [Cocoa] Added About menu item #45. Thanks to @bastula.
- `New` [Windows] An application icon for Windows Forms
- `Fix` [Windows] Removed unnecessary pywin32 dependencies from Windows Forms #60
- `Fix` [Linux] Thread violation in load_url in GTK implementation #59

## # 1.2.2

Released 10/10/2016

- `Fix` [All] Python 2 compatibility issue in Flask Example (#52). Thanks to @bastula.
- `Fix` [Windows] Python 3 compatibility issue in Windows Forms implementation (#51)
- `Fix` [Linux] Resizing width/height: 100% problem on GTK (#53). Thanks to @klausweiss.

## # 1.2.1

Released 29/09/2016

- `Fix` [Linux] GTK window failing to open. Thanks to @lchish. #50

## # 1.2

Released 27/09/2016

- `New` [All] Introduced `load_html` function that allows dynamic loading of HTML code, instead of a URL. Implemented for all platforms except Win32 (use Windows Forms). Thanks to @ysobolev #39
- `New` [All] Added an example of a Flask-based application skeleton. The example can be found in `examples/flask_app`
- `New` [Windows] Windows Forms based implementation of webview window. Requires pythonnet.
- `New` [Windows] Introduced config["USE_WIN32"] variable that lets you choose between Win32 and Windows Forms. Default to True (Windows Forms will be made as default in the future)
- `Fix` [Windows/Linux] Got rid of installation dependencies on Windows and Linux. The dependencies now have to be installed by hand and the choice of dependencies is left to user
- `Fix` [Linux] Compatibility with Qt 5.5. Thanks to @danidee10. #48

## # 1.1

Released 08/06/2016

- `New` [OSX] Add a default application menu #35. Thanks @cuibonobo
- `New` [Linux] GTK is made as default and pypi dependency added. USE_GTK environment variable is also deprecated. To use QT, set `webview.config["USE_QT"] = True`
- `Fix` [Windows] Open folder of create_file_dialog now returns Unicode, instead of byte encoding.

## # 1.0.2

Released 19/05/2016

- `Fix` [Windows] Fix a dead-lock that sometimes occurs on a window creation, when used with a HTTP server running in a separate thread.

## # 1.0.1

Released 17/05/2016

- `Fix` [Windows] PyInstaller: Icon not found #29

## # 1.0

Released 12/02/2016

- `New` [All] Add an ability to programmatically destroy a webview window
- `Fix` [Windows] Fullscreen mode
- `Fix` [Windows] Change setup.py to use pypiwin32 #22
- `Fix` [Windows] Relative import of win32_gen fixed on Python 3 #20. Thanks to @yoavram for the contribution
- `Fix` [Windows] FileNotFound exception on Windows 2003. Thanks to @jicho for the contribution
- `Fix` [OSX] Non-SSL URLs are allowed by default on El Capitan. Thanks to @cr0hn for the contribution

## # 0.9

Released 27/11/2015

- `New` [All] Right click context menu is disabled #12
- `New` [All] Window minimum size constraints #13
- `New` [All] Save file dialog
- `New` [All] Added `directory` and `save_filename` parameters to `create_file_dialog`
- `New` [All] An option to set a default directory in a file dialog
- `New` [GTK] Introduced USE_GTK environment variable. When set, GTK is preferred over QT.
- `Fix` [Windows] Webview scrollbar sizing with a non-resizable window
- `Fix` [Windows] Add support for application icon #9
- `Fix` [Windows] Disable logging spam for comtypes

## # 0.8.4

- `Fix` [Windows] Invisible scrollbars
- `Fix` [Windows] Fullscreen mode

## # 0.8.3

- `Fixed` #10 Underlying browser does not resize with window under windows

## # 0.8.2

Released on 08/10/2015

- `Fixed` Pressing close window button terminates the whole program on OSX

## # 0.8

Released on 06/10/2015

- `New` Support for native open file / open folder dialogs
- `Fixed` #6 FEATURE_BROWSER_EMULATION not in winreg.HKEY_CURRENT_USER. Thanks to @frip for the fix.

## # 0.7

Released on 08/04/2015

- `Fixed` Python 3 compatibility in Win32 module (thanks @Firnagzen) #3
- `Fixed` Floating values for window dimensions causing issues on Windows XP (thanks @Firnagzen) #4
- `Fixed` Correct IE version registry key on Windows XP (thanks @Firnagzen) #5

## # 0.6

Released on 11/02/2015

- `Fixed` A problem preventing from creating a window on Windows

## # 0.5

Released on 30/11/2014

- `New` Windows support
- `New` GTK3 support
- `New` pip installation
- `New` Fullscreen mode

## # 0.1

Released on 20/11/2014

- First release
- Linux and OSX support