Description
Sciter is an embeddable multiplatform HTML/CSS/script engine with GPU accelerated rendering designed to render modern desktop application UI. It's a compact, single dll/dylib/so file (4-8 mb), engine without any additional dependencies.
Sciter works on Microsoft Windows XP and above (x86/x64), Apple OS X v 10.7 and above (64-bit/32-bit) and Linux/GTK (GTK v 3.0 and above, 64-bit only).
Python bindings for Sciter alternatives and similar packages
Based on the "GUI" category.
Alternatively, view Python bindings for Sciter alternatives based on common mentions on social networks and blogs.
-
Textual
Lean TUI application framework for Python. Build sophisticated terminal user interfaces with a simple Python API. Run your apps in the terminal and a web browser. -
PySimpleGUI
Python GUIs for Humans! PySimpleGUI is the top-rated Python application development environment. Launched in 2018 and actively developed, maintained, and supported in 2024. Transforms tkinter, Qt, WxPython, and Remi into a simple, intuitive, and fun experience for both hobbyists and expert users. -
DearPyGui
Dear PyGui: A fast and powerful Graphical User Interface Toolkit for Python with minimal dependencies -
Flet
Flet enables developers to easily build realtime web, mobile and desktop apps in Python. No frontend experience required. -
Eel
DISCONTINUED. A little Python library for making simple Electron-like HTML/JS GUI apps [Moved to: https://github.com/ChrisKnott/Eel] -
wxPython
DISCONTINUED. **Not** βDiscontinuedβ: Per https://wxpython.org/ 4.2.2 Released 2024-09-11 This is a large, active, top-tier GUI-kit for Python (one of the top three). -
Python version of the Atlas toolkit
World's lightest toolkit to quickly and easily add a GUI to your Python programs and bring them online. -
Qt Style Sheet Inspector
A inspector to be able to view and edit Qt style sheet while an application is running -
PyQt
Python bindings for the Qt cross-platform application and UI framework, with support for both Qt v4 and Qt v5 frameworks.
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Python bindings for Sciter or a related project?
README
Python bindings for Sciter
Check this page for other language bindings (Delphi / D / Go / .NET / Python / Rust).
Introduction
Sciter is an embeddable multiplatform HTML/CSS/script engine with GPU accelerated rendering designed to render modern desktop application UI. It's a compact, single dll/dylib/so file (4-8 mb) engine without any additional dependencies.
Screenshots
Check the screenshot gallery of the desktop UI examples.
Description
Physically Sciter is a mono library which contains:
- HTML and CSS rendering engine based on the H-SMILE core used in HTMLayout,
- JavaScript in Sciter.JS,
- JavaScript alike Scripting engine β core of TIScript which by itself is based on c-smile engine,
- Persistent Database (a.k.a. JSON DB) based on excellent DB products of Konstantin Knizhnik.
- Graphics module that uses native graphics primitives provided by supported platforms: Direct2D on Windows 7 and above, GDI+ on Windows XP, CoreGraphics on MacOS, Cairo on Linux/GTK. Yet there is an option to use built-in Skia/OpenGL backend on each platform.
- Network communication module, it relies on platform HTTP client primitives and/or Libcurl.
Internally it contains the following modules:
- CSS β CSS parser and the collection of parsed CSS rules, etc.
- HTML DOM β HTML parser and DOM tree implementation.
- layout managers β collection of various layout managers β text layout, default block layout, flex layouts. Support of positioned floating elements is also here. This module does the layout calculations heavy lifting. This module is also responsible for the rendering of layouts.
- input behaviors β a collection of built-in behaviors β code behind "active" DOM elements:
<input>
,<select>
,<textarea>
, etc. - script module β source-to-bytecode compiler and virtual machine (VM) with compacting garbage collector (GC). This module also contains runtime implementation of standard classes and objects: Array, Object, Function and others.
- script DOM β runtime classes that expose DOM and DOM view (a.k.a. window) to the script.
- graphics abstraction layer β abstract graphics implementation that isolates the modules mentioned above from the particular platform details:
- Direct2D/DirectWrite graphics backend (Windows);
- GDI+ graphics backend (Windows);
- CoreGraphics backend (Mac OS X);
- Cairo backend (GTK on all Linux platforms);
- Skia/OpenGL backend (all platforms)
- core primitives β set of common primitives: string, arrays, hash maps and so on.
Sciter supports all standard elements defined in HTML5 specification with some additions. CSS is extended to better support the Desktop UI development, e.g. flow and flex units, vertical and horizontal alignment, OS theming.
Sciter SDK comes with a demo "browser" with a builtin DOM inspector, script debugger and documentation viewer:
Check https://sciter.com website and its documentation resources for engine principles, architecture and more.
Getting started:
- Download the Sciter.TIS or Sciter.JS SDK and extract it somewhere.
- Add the corresponding target platform binaries to PATH (
bin.win/x64
,bin.osx
orbin.lnx/x64
) and install Sciter shared library to your LIBRARY_PATH. - Install pysciter:
python3 setup.py install
orpip install pysciter
. - Run the minimal pysciter sample:
python3 examples/minimal.py
. Also you can run script from zip archive directly:python3 ./archive.zip
:)
Brief look:
Minimal sciter app is extremely small:
import sciter
if __name__ == '__main__':
frame = sciter.Window(ismain=True, uni_theme=True)
frame.load_file("minimal.htm")
frame.expand()
frame.run_app()
It looks similar to this:
Interoperability
In respect of tiscript or JavaScript functions calling:
answer = self.call_function('script_function', "hello, python!", "and", ["other", 3, "arguments"])
Calling python from script can be implemented as following:
def GetNativeApi(): # called from sciter.EventHandler.on_script_call
def on_add(a, b):
return a + b
def on_sub(a, b):
raise Exception("sub(%d,%d) raised exception" % (a, b))
api = { 'add': on_add, # plain function
'sub': on_sub, # raise exception at script
'mul': lambda a,b: a * b } # lambdas supported too
return api
So, we can access our api now from TIScript:
// `view` represents window where script is runnung.
// `stdout` stream is a standard output stream (shell or debugger console, for example)
var api = view.GetNativeApi();
// returned `api` object looks like {add: function(a,b) { return a + b; }};
stdout.println("2 + 3 = " + api.add(2, 3));
or from JavaScript:
// `Window.this` represents the window where this script is running.
const api = Window.this.GetNativeApi();
console.log("2 + 3", api.add(2, 3));
Check pysciter/examples folder for more complex usage.
What is supported right now:
- [x] sciter::window which brings together window creation, host and event handlers.
- [x] sciter::host extensible implementation with transparent script calls from python code.
- [x] sciter::event_handler with basic event handling (attached, document_complete, on_script_call), additional handlers will come.
- [x] sciter::dom for HTML DOM access and manipulation methods.
- [x] sciter::value pythonic wrapper with
sciter::script_error
andsciter::native_function
support. - [ ] sciter::behavior_factory - global factory for native behaviors.
- [ ] sciter::graphics - platform independent graphics native interface (can be used in native behaviors).
- [ ] sciter::request - resource request object, used for custom resource downloading and handling.
- [ ] sciter::video - custom video rendering.
- [ ] sciter::archive - Sciter's compressed archive produced by
sdk/bin/packfolder
. - [ ] sciter::msg - backend-independent input event processing.
- [ ] sciter::om - Sciter Object Model, extending Sciter by native code.
- [ ] NSE - native Sciter extensions.
Platforms:
- [x] Windows
- [x] OSX
- [x] Linux
- [x] Raspberry Pi
Python 3.x.
License
Bindings library licensed under MIT license. Sciter Engine has the own license terms and end used license agreement for SDK usage.
*Note that all licence references and agreements mentioned in the Python bindings for Sciter README section above
are relevant to that project's source code only.