Build GUI for your Python program with JavaScript, HTML, and CSS


pywebview logo

PyPI version PyPI downloads Build Status Build status

pywebview is a lightweight cross-platform wrapper around a webview component that allows to display HTML content in its own native GUI window. It gives you power of web technologies in your desktop application, hiding the fact that GUI is browser based. You can use pywebview either with a lightweight web framework like Flask or Bottle or on its own with a two way bridge between Python and DOM.

pywebview uses native GUI for creating a web component window: WinForms on Windows, Cocoa on macOS and QT or GTK on Linux. If you choose to freeze your application, pywebview does not bundle a heavy GUI toolkit or web renderer with it keeping the executable size small. pywebview is compatible with Python 3.

pywebview is created by Roman Sirokov.

Getting started


pip install pywebview

On Linux you need additional libraries. Refer to the installation page for details.

Hello world

import webview
webview.create_window('Hello world', '')

Explore pywebview further by reading documentation, examples or contributing. If React is your thing, get started right away with React boilerplate.


Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain our community. More donation options are outlined on the Donating page.


Become a Patron!


Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

  • Stop freezing main thread

    Stop freezing main thread

    stop freezing main thread

    • winforms Edge(supported, tested)
    • winforms CEF (supported, not tested)
    • winforms IE (supported, not tested)
    • gtk(supported, tested)
    • qt(supported, tested on linux only)
    • cocoa(not supported)


    • test IE
    • test CEF
    • test qt on mac
    • develop cocoa

    other developers are welcomed

    opened by Ksengine 82
  • web browser runtimes

    web browser runtimes

    add web browser runtimes

    we can use chrome and firefox as runtimes. we can remove menus, search bar and other decorations. i have experience with doing this

    chrome is easy firefox is bit complex

    • YES I am willing to work on this issue myself.

    • NO I am not prepared to support this issue financially.

    opened by Ksengine 43
  • Upgrading to WebKit2 (GTK) and WKWebView (Cocoa)

    Upgrading to WebKit2 (GTK) and WKWebView (Cocoa)


    • Platform: Fedora
    • Version: 27


    I was wondering if you are going to move to WebKit2 and deprecate WebKit1. I've been trying to develop a Python/Gtk application and keep seeing warnings about WebKit security. Such as;

    In my application I'm using a try/except to test the version like this; ` import gi try: gi.require_version('Gtk', '3.0') from gi.repository import Gtk, Gdk # , Gio except: sys.exit("This script requires Gtk 3.0 or newer!")

    try: gi.require_version('WebKit2', '4.0') from gi.repository import WebKit2 except: sys.exit("This script requires WebKit2 4.0 or newer!") ` As a side note, I'm having a difficult time learning how to use WebKit. Searching for answers is what led me to pywebview. Also, I tried to find a way to label this as label:"help wanted", but I can't see how to apply a label, sorry.

    enhancement macOS linux resolved 
    opened by pydoh 43
  • [Windows 10] Window height properties not computing in exe

    [Windows 10] Window height properties not computing in exe


    • pywebview version: 3.0
    • platform / version: Windows 10


    I got packaging to work for my React app on Mac and Windows. The only weird thing is on windows when I run the exe the height in the page seems to be missing, this is best explained through the photos. It works fine if i run my code In pycharms, it's only after packaging as exe do I see this weird bug.

    Run from PyCharm on windows and what it looks like on mac: After packaging:

    To recreate this, you can make a new react app with npx create-react-app, run npm build in it, and move the index.html from the build folder to a templates folder and the rest to the static folder.

    And I use this command to package pyinstaller -w -F --add-data "templates;templates" --add-data "static;static" --add-data "WebBrowserInterop.x86.dll;./" --onefile -y

    It's also weird that its using x86 since I'm pretty sure I have the 64 bit of python. And also when I used the full path like C:\Users\saran\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\webview\lib\WebBrowserInterop.x86.dll It never worked for me. Only when I copied it into local folder did it work.


    • [X] I am willing to work on this issue myself.

    • [ ] I am prepared to support this issue financially.

    windows resolved 
    opened by SaranSundar 40
  • Provide JavaScript ↔ Python bridge to pywebview

    Provide JavaScript ↔ Python bridge to pywebview

    It's possible to create a bridge between the webview and python without depending on sockets. The problem of starting a server on windows is that the firewall can block the application or show a security warning, including when I start the server only on localhost.

    Very probably this bridge between a webview and the python interpreter is much more efficient because it doesnt use the HTTP protocol, and it hasn't the before mentioned problem:

    enhancement all platforms 
    opened by aplicacionamedida 35
  • Edge WebView2 support

    Edge WebView2 support

    Windows Forms support for Chromium based WebView2 has finally arrived. Implementing this for pywebview should be doable at this point.

    opened by r0x0r 34
  • Support for multiple windows?

    Support for multiple windows?

    This feature will probably change the API significantly, but I wanted to at least document the need.

    Essentially my idea would be that the webview.create_window() function returns a window handle or maybe even a BrowserView object that can be manipulated directly. That way you could instantiate multiple windows and destroy them individually.

    Perhaps the app can quit when the last window is destroyed, or maybe there could be a 'master' window instance that can control all the other ones.

    I'm kind of spit-balling but hopefully you get the idea. Could pywebview support multiple windows? Can you think of some other way to do it that doesn't involve a major API change?

    enhancement all platforms 
    opened by cuibonobo 34
  • Question: Linking html resources

    Question: Linking html resources

    What is the correct way to link local js and ccs files? It appears the standard html and do not work. I also tried using the full path for both and that didn't work either. And I tried ./style.css. that didn't work.

    It does look like CDN links work but they take a long time to load.

    Any advice?

    opened by tjohnsonhvac 30
  • pyInstaller to freeze the app

    pyInstaller to freeze the app


    I tried several things, and even py2Exe on windows, but nothing worked. As I am using python 3.5, I figured out pyInstaller would be ok, but still when I compile with it I get an exe that doesn't work, and a bunch of missing libraries warnings.

    Is there any working example of how to compile the simple pywebview introduction example (just a window that loads a website) for pyInstaller? Or if someone can share it (the exact call, with the exact params, and the spec file, if needed).


    (Note: I did try the example with the py2Exe, but didn't work).

    opened by martinlombana 27
  • Memory leak on windows

    Memory leak on windows

    There appears to be a memory leak on Windows, occurring whenever webview.evaluate_js() is called. I'm using pywebview v1.7 + "pythonnet" on Windows 10 64bit, with python3.6.2. The same issue does not exist on mac.

    Code to reproduce (most trivial example I could come up with)

    import webview
    import threading
    import time
    threadStopSignal = threading.Event()
    def checkOnDOM():
    	global threadStopSignal 
    	while threadStopSignal.is_set() == False:
    		webview.evaluate_js("doNothing()" )
    def main():
    	print("Beginning program")
    	t = threading.Thread(target=checkOnDOM)
    	webview.create_window("This is a window", "index.html")
    <!DOCTYPE html>
    <script type="text/javascript">
    	function doNothing() { }

    Then watch the memory usage of the program grow in the task manager. The memory usage on Mac remains static when running this program.

    In order to further investigate, I later changed doNothing to

    function doNothing() {
         return document.getElementsByTagName("script").length;

    which, when printed in python, made it clear that the number of script elements is growing (and never shrinking) with each call to evaluate_js(). Not sure if that's the expected behavior.

    Finally, if the value of those script tags is printed, we see something like function invokecb2c8066aea211e7849010f0050b27cc() {return eval("doNothing()")} which over time monotonically grows to higher values

    function invokef9d07746aea211e780ee10f0050b27cc() {return eval("doNothing()")}
    function invokef9d29312aea211e791b410f0050b27cc() {return eval("doNothing()")}
    function invokef9d46ef6aea211e78f1f10f0050b27cc() {return eval("doNothing()")}

    up and up.... Are these pointers to resources in windows that never get cleaned up, or are they just GUIDs?

    Happy to provide any more info.

    Really enjoying the library, btw! Hoping to resolve the memory issue on the windows side so I can use it further.

    wontfix windows 
    opened by pomplesiegel 26
  • cef hangs while resizing in certain conditions

    cef hangs while resizing in certain conditions


    • pywebview version: 3.2
    • platform / version: Win7 Pro SP1
    • cefpython3 version 66.0


    Observed reproducible hang during use of cef gui, if triggering some kind of update while resizing the window. Minimally this code usually (but not 100% of the time) hangs on my machine:

    import webview
    window=webview.create_window('Hello world', html='<h1>hello</h1>')
    def reload_and_resize():
        window.resize(1000, 420)
    webview.start(reload_and_resize, gui="cef")

    or while manually resizing something more like this:

    import webview,time
    window=webview.create_window('Hello world', html='<h1>hello</h1>')
    def keep_reloading():
        while True:
    webview.start(keep_reloading, gui="cef")

    This may be a cefpython issue.

    opened by MarkusFF 23
  • JS API drops invocations due to potential bug/race condition on GTK platform

    JS API drops invocations due to potential bug/race condition on GTK platform


    • pywebview version: 3.7.2
    • operating system: Ubuntu 22.04
    • web renderer: GTK webengine


    When using GTK platform, there appears to be a bug in how it invokes functions via the JS -> Py API mechanism. Namely, if you call two JS_API function in quick succession, one or more of them will never return and will not be invoked on the Python side.

    Here's a minimal example that demonstrates the problem:

    import webview
    html = """
    <!DOCTYPE html>
    <head lang="en">
    <meta charset="UTF-8">
    <h1>JS API Example</h1>
    <p id='pywebview-status'><i>pywebview</i> is not ready</p>
    <div id="response-container"></div>
        window.addEventListener('pywebviewready', function() {
            var container = document.getElementById('pywebview-status')
            container.innerHTML = '<i>pywebview</i> is ready'
        function doTheThings() {
            var container = document.getElementById('response-container')
            pywebview.api.do_thing_1().then(function(response) {
                container.innerHTML += '<p>' + response + '</p>'
            pywebview.api.do_thing_2().then(function(response) {
                container.innerHTML += '<p>' + response + '</p>'
            pywebview.api.do_thing_3().then(function(response) {
                container.innerHTML += '<p>' + response + '</p>'
    class Api:
        def do_thing_1(self):
            return "Done thing 1"
        def do_thing_2(self):
            return "Done thing 2"
        def do_thing_3(self):
            return "Done thing 3"
    if __name__ == '__main__':
        api = Api()
        window = webview.create_window('API example', html=html, js_api=api)
        webview.start(gui="gtk", debug=True)

    Executing this with the GTK platform, I consistently only ever get the "Done thing 3" message. It works as-expected on, at least, the Cocoa & QT backends.

    Looking at the code, the issue appears to be with how the document title is used as a transport mechanism for invoking the JS API. My assumption of what is happening is that if document.title is set twice by before GTK's on_title_change is run, then only the last call to set the title will get invoked.

    Assuming that's the issue, a potential fix might be to have to wait until the python is done reading webview.get_title before it changes the title again. Perhaps the python code calls webview.run_javascript('document.title=""') after webview.get_title(), which JS takes as a notification that it can invoke another function. Or something to that effect.


    • YES I am willing to work on this issue myself. I can make a PR. Mostly I'd like validation on the problem and suggested fix before proceeding.

    • NO I am not prepared to support this issue financially.

    opened by amacf 3
  • Non blocking window

    Non blocking window

    Is there the possibility to open a window in non-blocking mode? I see there was an example in an older branch, which is not working with the current release. E.g. removing "Thread.Join()" in the would do that, but thats probably considered as a quick&dirty hack?

    opened by hoba87 1
  • 4.0


    Support for WSGI

    Encapsulated server in an object so new ones could be added easily. Each window with a local URL or app gets its own server, plus one global server so serverless windows can use the JS API.

    Passes tests on a Mac, and runs a non-trivial FastAPI app converted to WSGI with a2wsgi.

    opened by robb-brown 0
  • How to Hide Html Templete folder when create executable file

    How to Hide Html Templete folder when create executable file


    • pywebview version: 3.7
    • operating system: windows 10


    if i am using --onfile in pyinstaller so my html is hide but executable file is very heavy and execution time is so far


    if i am using without --onefile in pyinstaller so execution time is very fast but my html folder is not hide and every person seen the html logic

    so please tell me how to solve

    opened by MominIqbal-1234 2
  • xSegault on MacOS

    xSegault on MacOS


    • pywebview version: 3.7.2
    • operating system: MacOS 13.0.1
    • web renderer:


    demo app segfaults.

    pwv/pywebview [master {origin/master}|…3]: cat
    import webview
    webview.create_window('Hello world', '')
    pwv/pywebview [master {origin/master}|…3]: python3
    [1]    60031 segmentation fault  python3


    • YES I am willing to work on this issue myself. Although I doubt I am competent.

    • NO I am not prepared to support this issue financially. Just a hobbyist here. Got it working fine on Windows, was curious about MacOS.


    opened by johndoe46 0
  • nuitka compile exe run error

    nuitka compile exe run error

    nuitka --standalone --output-dir=output .\

    PS D:\Work\PatternConverter\output\js_api.dist> .\js_api.exe Traceback (most recent call last): File "D:\Work\PatternConverter\output\js_api.dist\", line 37, in File "D:\Work\PatternConverter\output\js_api.dist\", line 29, in File "D:\Work\PatternConverter\output\js_api.dist\", line 5, in File "D:\Work\PatternConverter\output\js_api.dist\", line 36, in File "D:\Work\PatternConverter\output\js_api.dist\", line 1, in File "D:\Work\PatternConverter\output\js_api.dist\", line 127, in File "D:\Work\PatternConverter\output\js_api.dist\", line 18, in ImportError: cannot import name 'namedtuple' from partially initialized module 'collections' (most likely due to a circular import) (D:\Work\PatternConverter\output\js_api.dist\ PS D:\Work\PatternConverter\output\js_api.dist>

    opened by masonwu21 1
  • 3.7.2(Nov 16, 2022)

    Released 16/11/2022

    🐞 Bug fixes

    • [All] Fix missing libraries from the previous release

    πŸš€ Improvements

    • [Windows / Linux] Devtools is automatically opened in debug mode.
    • [EdgeChromium] Browser shortcut keys are disabled by default
    Source code(tar.gz)
    Source code(zip)
  • 3.7.1(Nov 14, 2022)

  • 3.7(Nov 4, 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
    Source code(tar.gz)
    Source code(zip)
  • 3.6.3(Apr 5, 2022)

  • 3.6.2(Mar 5, 2022)

  • 3.6.1(Feb 16, 2022)

  • 3.6(Feb 16, 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 namespace (e.g. window.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.
    Source code(tar.gz)
    Source code(zip)
  • 3.5(Aug 2, 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
    Source code(tar.gz)
    Source code(zip)
  • 3.4(Dec 4, 2020)

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

  • 3.3.4(Sep 18, 2020)

    • [EdgeHTML] Fix content not displaying with local URLs or local HTTP server
    • [Cocoa] Fix arrow keys not responding in text input fields. Thanks awesomo4000
    Source code(tar.gz)
    Source code(zip)
  • 3.3.3(Aug 8, 2020)

  • 3.3.2(Jul 28, 2020)

    • Fix [All] Load html triggers error - resolve_url() missing 1 required positional argument: 'should_serve' #562.
    • Fix [Cocoa/GTK] Access window size on closing #573.
    • Fix [GTK] Save file dialog now returns a string instead of a tuple.
    Source code(tar.gz)
    Source code(zip)
  • 3.3.1(Jun 30, 2020)

  • 3.3(Jun 30, 2020)

    • New [All] Brand-new WSGI based internal HTTP server. Thanks @astronouth7303.
    • New [All] Transparent windows. 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.
    • New [All] Custom user-agent support. Thanks @tognee.
    • Fix [All] Python function not triggered using JS #458.
    • Fix [All] window methods do not work in loaded event #528.
    • Fix [Cocoa] Caption bar and window control buttons are now hidden In frameless mode.
    • Fix [CEF] CEF window resize hang #484.
    • 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
    Source code(tar.gz)
    Source code(zip)
  • 3.2(Jan 24, 2020)

    Released 24/01/2020

    • New [All] Window x, y, width and height properties to retrieve coordinates and dimensions of the window. Thanks @Fizzadar
    • 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
    • Improvement [QT] Default debugger port is changed to 8228. Thanks @melvinkcx
    • 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
    Source code(tar.gz)
    Source code(zip)
  • 3.1(Nov 4, 2019)

    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.pywebviewreadyDOM event that is thrown when window.pywebview is available.
    • New [All] Links opened via 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 occuring when trying to access window.pywebview object right after the
    • 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. Β―\_(ツ)_/Β―
    Source code(tar.gz)
    Source code(zip)
  • 3.0.2(Aug 17, 2019)

    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 occuring in a thread.
    Source code(tar.gz)
    Source code(zip)
  • 3.0.1(Jul 25, 2019)


    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
    Source code(tar.gz)
    Source code(zip)
  • 3.0(Jul 10, 2019)

    • New [All] New API. The API is not compatible with older versions of pywebview. See 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 event 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
    Source code(tar.gz)
    Source code(zip)
  • 2.4(Feb 17, 2019)

  • 2.3(Feb 12, 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
    Source code(tar.gz)
    Source code(zip)
  • 2.2.1(Oct 24, 2018)

  • 2.2(Oct 23, 2018)

    • New Brand new documentation at
    • Improvement Simplify installation. Now pywebview can be installed by pip install pywebview. Dependencies will be resolved and installed automatically
    • Improvement [GTK] Update to WebKit2
    Source code(tar.gz)
    Source code(zip)
  • 2.1(Sep 16, 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.
    Source code(tar.gz)
    Source code(zip)
  • 2.0.3(May 16, 2018)

  • 2.0.2(May 8, 2018)

  • 2.0.1(May 8, 2018)

  • 2.0(Apr 28, 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 verison new features won't be tested on QT4 and support will be removed in the future.
    Source code(tar.gz)
    Source code(zip)
  • 1.8(Oct 28, 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
    Source code(tar.gz)
    Source code(zip)
Make desktop applications using HTML and CSS with python

Neutron Make desktop applications using HTML and CSS with python What is Neutron Neutron will allow developers to design modern applications in python

Ian Baldelli 284 Dec 29, 2022
The GUI application by Python3.8. Using QT Design draw UI and generator UI XML file provides to PySide2 build GUI components

The GUI application by Python3.8. Using QT Design draw UI and generator UI XML file provides to PySide2 build GUI components. Total adopt OOD design class, service, and abstract class. OOP implemented this project.

Jiage 1 Jan 11, 2022
PyQt5 Sample GUI Program - Python PyQt5 Sample GUI application

Python PyQt5 Sample GUI application Program work like this Designed GUI using De

Dimuth De Zoysa 5 Mar 27, 2022
A little Python library for making simple Electron-like HTML/JS GUI apps

Eel Eel is a little Python library for making simple Electron-like offline HTML/JS GUI apps, with full access to Python capabilities and libraries. Ee

Chris Knott 5.4k Jan 7, 2023
A GUI for designing Python GUI's for PySimpleGUI.

SimpleGUIBuilder A GUI for designing Python GUI's for PySimpleGUI. Installation There is none :) just download the file from a release and run it. Don

Miguel Martins 65 Dec 22, 2022
Use CSS styling in Tkinter apps

cssTk To-Do Support Upto CSS 4.15 Set Up Docs Features * Corner Radius Gradient BG Blur Animations Usage Scenarios Allows easy import of GTK 3 and GTK

RUG 5 Oct 18, 2022
Turn (almost) any Python command line program into a full GUI application with one line

Gooey Turn (almost) any Python 2 or 3 Console Program into a GUI application with one line Support this project Table of Contents Gooey Table of conte

Chris 17k Jan 9, 2023
Function-Plotter - GUI Python program that plots functions that are entered by the user

FunctionPlotter GUI Python program that plots functions that are entered by the user. The program takes minimum and maximum value for x and plot it as

Mohamed Magdy 2 Jan 20, 2022
A small GUI random roll call program made by Python.

A small GUI random roll call program made by Python.

Yuchen Ren 0 Feb 21, 2022
Create shortcuts on Windows to your Python, EXE, Batch files or any other file using a GUI made with PySimpleGUI

shor Windows Shortcut Creation Create Windows Shortcuts to your python programs and any other file easily using this application created using PySimpl

PySimpleGUI 7 Nov 16, 2021
A html canvas based screencasting server with occasional ground-truth updates via screenshots and very fast input drawing

rm2canvas A html canvas based screencasting server for the reMarkable 1/2 digital paper systems. It draws live on the canvas from the remarkables touc

null 45 Sep 8, 2022
Custom GUI for your Blender add-ons using Dear ImGui

Dear Imgui for Blender Use the infamous Dear ImGui library directly in your Blender scripts! This means custom GUI drawing in your operators: Normally

Elie Michel 83 Dec 25, 2022
A Minimalistic Backup GUI for your Windows, Mac or Linux

BlobBackup is a minimalistic backup utility for your Windows, Mac or Linux computer. With an excellent engine, extensive storage support, and an easy

Bimba Shrestha 283 Nov 30, 2022
A Minimalistic Backup GUI for your Windows, Mac or Linux

BlobBackup is a minimalistic backup utility for your Windows, Mac or Linux computer. With an excellent engine, extensive storage support, and an easy

null 283 Nov 30, 2022
A simple, yet powerful web GUI to manage your Wireguard server, powered by Flask.

Linguard Linguard aims to provide a clean, simple yet powerful web GUI to manage your WireGuard server, and it's powered by Flask. Read the docs for f

Jose Antonio MazΓ³n San BartolomΓ© 111 Jan 7, 2023
A simple one-line quick entry GUI for your Obsidian daily notes in markdown format.

Quick-note-entry-for-Obsidian A simple one-line quick entry GUI for your Obsidian daily notes in markdown format. Log your day quickly with this simpl

Adrian Papineau 22 Oct 4, 2022
My Git GUI version made in Python and Tkinter.

Description My Git GUI version made in Python and Tkinter. How to use Basically, create a folder in your computer, open the software, select the path

Matheus Golzio 4 Oct 10, 2021
Delphi's FireMonkey framework as a Python module for Windows, MacOS, Linux, and Android GUI development.

DelphiFMX4Python Delphi's FireMonkey framework as a Python module for Windows, MacOS, Linux, and Android GUI development. About: The delphifmx library

Embarcadero Technologies 191 Jan 9, 2023