Skip to content

pyside6-scintilla

CI PyPI Downloads License: MIT Python versions

Permissively-licensed PySide6 bindings for the Scintilla code editor component.

View on PyPI · View on GitHub

Status

The ScintillaEditBase, ScintillaEdit, and ScintillaDocument bindings are implemented and working — see the examples gallery for runnable demos. Pre-built wheels are published on PyPI for Linux (x86_64), Windows (x86_64), and macOS (arm64, x86_64), Python 3.11-3.14. Linux aarch64 wheels are tracked as issue #4.

Installation

Install from PyPI:

pip install pyside6-scintilla

PySide6 6.10+ is installed automatically as a dependency; the wheels bundle everything else ScintillaEditBase needs at runtime.

Usage

from PySide6.QtWidgets import QApplication
from pyside6_scintilla import ScintillaEdit

app = QApplication([])
editor = ScintillaEdit()
editor.setText("hello, world")
editor.show()
app.exec()

ScintillaEdit exposes a typed method per Scintilla message (e.g. setText(), textLength(), gotoLine()) on top of ScintillaEditBase's raw .send()/.sends() message API — the same SCI_* messages as the C interface, not a QScintilla-style high-level API. See the examples gallery for complete examples of both.

Why this exists

The standard way to use Scintilla from Python + Qt is QScintilla — but it's a PyQt6 binding with no PySide6 equivalent, and it's GPLv3 or commercially licensed. Scintilla itself is licensed under the permissive HPND license. This project exposes that permissive core directly to PySide6 users — see Project mission for the full background.

Development

See the Development section for how the bindings are built, how to set up a local build, and how the vendored Scintilla source is verified against upstream.

Roadmap

The project board tracks the joint roadmap for pyside6-scintilla and lexilla-py; issues and PRs from both repos are added to it automatically.