API | pywebview (v2.4)
Description: Build GUI for your Python program with JavaScript, HTML, and CSS

# # API

## # create_window

    create_window(title, url='', js_api=None, width=800, height=600, resizable=True,\
                  fullscreen=False, min_size=(200, 100), strings={}, confirm_quit=False, \
                  background_color='#FFF', debug=False, text_select=False)

Create a new pywebview window. Calling this function for the first time will start the application and block program execution. You have to execute your program logic in a separate thread. Subsequent calls to `create_window` will return a unique window `uid`, which can be used to refer to the specific window in the API functions. Single-window applications need not bother about the `uid` and can simply omit it from function calls.

- `title` - Window title
- `url` - URL to load. If the URL does not have a protocol prefix, it is resolved as a path relative to the application entry point.
- `js_api` - Expose a `js_api` class object to the DOM of the current `pywebview` window. Callable functions of `js_api` can be executed using Javascript page via `window.pywebview.api` object. Custom functions accept a single parameter, either a primitive type or an object. Object types are converted between Javascript and Python. Functions are executed in separate threads and are not thread-safe. `window.pywebview` is not guaranteed to be available on `window.onload` and its access must be deferred.
- `width` - Window width. Default is 800px.
- `height` - Window height. Default is 600px.
- `resizable` - Whether window can be resized. Default is True
- `fullscreen` - Whether to start in fullscreen mode. Default is False
- `min_size` - a (width, height) tuple that specifies a minimum window size. Default is 200x100
- `strings` - a dictionary with localized strings. Default strings and their keys are defined in localization.py
- `confirm_quit` - Whether to display a quit confirmation dialog. Default is False
- `background_color` - Background color of the window displayed before WebView is loaded. Specified as a hex color. Default is white.
- `debug` - Enabled debug mode. See debugging for details
- `text_select` - Enables document text selection. Default is False. To control text selection on per element basis, use user-select
  CSS property.

The functions below must be invoked after a pywebview window is created, otherwise an exception is thrown. In all cases, `uid` is the uid of the target window returned by `create_window()`; if no window exists with the given `uid`, an exception is thrown. Default is `'master'`, which is the special uid given to the first window.

### # Examples

- Simple window
- Multi-window

## # create_file_dialog

    create_file_dialog(dialog_type=OPEN_DIALOG, directory='', allow_multiple=False, save_filename='', file_types=())`

Create an open file (`webview.OPEN_DIALOG`), open folder (`webview.FOLDER_DIALOG`) or save file (`webview.SAVE_DIALOG`) dialog.

Return a tuple of selected files, None if cancelled.

- `allow_multiple=True` enables multiple selection.
- `directory` Initial directory.
- `save_filename` Default filename for save file dialog.
- `file_types` A tuple of supported file type strings in the open file dialog. A file type string must follow this format `"Description (*.ext1;*.ext2...)"`.

If the argument is not specified, then the `"All files (*.*)"` mask is used by default. The 'All files' string can be changed in the localization dictionary.

### # Examples

- Open-file dialog
- Save-file dialog

## # destroy_window

    destroy_window(uid='master')

Destroy the specified WebView window.

Example

## # evaluate_js

    evaluate_js(script, uid='master')

Execute Javascript code in the specified window. The last evaluated expression is returned. Javascript types are converted to Python types, eg. JS objects to dicts, arrays to lists, undefined to None. Note that due implementation limitations the string 'null' will be evaluated to None. You must escape \n and \r among other escape sequences if they present in Javascript code. Otherwise they get parsed by Python. r'strings' is a recommended way to load Javascript.

## # get_current_url

    get_current_url(uid='master')

Return the current URL in the specified window. None if no url is loaded.

Example

## # load_css

    load_css(css, uid='master')

Load CSS as string into the specified window.

Example

## # load_html

    load_html(content, base_uri=base_uri(), uid='master')

Load HTML code into the specified window. Base URL for resolving relative URLs is set to the directory the program is launched from. Note that you cannot use hashbang anchors when HTML is loaded this way.

Example

## # load_url

    load_url(url, uid='master')

Load a new URL into the specified pywebview window.

Example

## # set_title

    set_title(title, uid='master')

Change the title of the window

Example

## # toggle_fullscreen

    togle_fullscree(uid='master')

Toggle fullscreen mode of a window on the active monitor.

Example

## # window_exists

    window_exists(uid='master')

Return True if a pywebview window with the given uid is up and running, False otherwise.

## # config

    config.gui = 'qt' | 'gtk'

Force GUI library to either GTK or QT. The same setting can be controlled via `PYWEBVIEW_GUI` environmental variable

Help us improve this page!