Giter Club home page Giter Club logo

pywebview's Introduction

pywebview

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, eliminating the need of launching a web browser. Combined with a lightweight web framework like Flask, Bottle or web.py, you can create beautiful cross-platform HTML5 user interfaces targeting WebKit, while hiding implementation details from the end user. If HTML is not your strong point, you might want to use REMI, which allows you to create HTML based interfaces using Python code only.

pywebview is lightweight and has no dependencies on an external GUI framework. It uses native GUI for creating a web component window: Win32 on Windows, Cocoa on Mac OSX and Qt4/5 or GTK3 on Linux. If you choose to freeze your application, it does not bundle a heavy GUI toolkit with it keeping the executable size small. Compatible with both Python 2 and 3.

An example application created with pywebview can be found here https://github.com/r0x0r/traktorlibrarian If you have built an app using pywebview, please do not hesitate to tell about it.

License

The BSD license

Installation

pip install pywebview

Contributions and bug reports

Help, PRs and donations are welcome. If you found a bug, please test it first in a web-browser that is used by default for your operating system to see if the problem is with your code, rather than pywebview. Feature requests are welcome, but nothing is guaranteed.

Dependencies

Windows

pywin32, comtypes. ActiveState distribution of Python 2 comes with pywin32 preinstalled

OS X

pyobjc. PyObjC comes presintalled with the Python bundled in OS X. For a stand-alone Python installation you have to install it separately.

Linux

For GTK3 based systems PyGObject

For QT based systems

Either PyQt4 or PyQt5

Usage

import webview

webview.create_window("It works, Jim!", "http://www.flowrl.com")

For more elaborated usage, refer to the examples in the examples folder

API

  • webview.create_window(title, url, width=800, height=600, resizable=True, fullscreen=False, min_size=(200, 100)) Create a new WebView window. Calling this function will block execution, so you have to execute your program logic in a separate thread.

  • webview.load_url(url) Load a new URL into a previously created WebView window. This function must be invoked after WebView windows is created with create_window(). Otherwise an exception is thrown.

  • webview.create_file_dialog(dialog_type=OPEN_DIALOG, directory='', allow_multiple=False, save_filename='') Create an open file (webview.OPEN_DIALOG), open folder (webview.FOLDER_DIALOG) or save file (webview.SAVE_DIALOG) dialog. allow_multiple=True enables multiple selection. directory Initial directory. save_filename Default filename for save file dialog. Return a tuple of selected files, None if cancelled

  • webview.destroy_window() Destroy a webview window

What web renderer is used?

For OS X and Linux systems you get WebKit. The actual version depends on the version of installed Safari on OS X and QT / GTK on Linux. Note that WebKit bundled with QT / GTK is slightly out of date comparing to the latest Safari or Chrome.

For Windows, you get MSHTML (Trident) in all its glory. The version depends on the installed version of Internet Explorer. By default, when creating an embedded web component, MSHTML uses IE7 rendering mode. To overcome this feature, a registry setting is modified to use the latest installed version of Internet Explorer. Note that for Windows XP systems, you cannot get anything better than IE8. For Vista, you are limited to IE9.

In Windows 10, IE11 is used as a renderer. EdgeHTML does not support COM interface, but requires a .NET implementation. This is planned for future versions for pywebvview.

Cache issues

Web renderer might cache your code and fail to invalidate it, when it is updated. To prevent that add the following directives to the <HEAD> of your HTML files

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="-1">

How do I freeze my application?

Use py2app on OS X and py2exe on Windows. For reference setup.py files, look in examples/py2app_setup.py and examples/py2exe_setup.py

Changelog

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

pywebview's People

Contributors

cr0hn avatar r0x0r avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.