Skip to content

Slint Python API

Slint is a UI toolkit that supports different programming languages. Slint-python is the integration with Python.

This documentation describes slint 1.17.0b1.

Install Slint with uv or pip from the Python Package Index:

Terminal window
uv add slint
bash

The installation uses binaries provided for macOS, Windows, and Linux for various architectures. If your target platform is not covered by binaries, uv will automatically build Slint from source. If that happens, you will need some software development tools on your machine, as well as Rust.

  1. Create a new project with uv init.
  2. Add the Slint Python package to your project: uv add slint.
  3. Create a file called app-window.slint:
import { Button, VerticalBox } from "std-widgets.slint";
export component AppWindow inherits Window {
in-out property<int> counter: 42;
callback request-increase-value();
VerticalBox {
Text {
text: "Counter: \{root.counter}";
}
Button {
text: "Increase value";
clicked => {
root.request-increase-value();
}
}
}
}
slint
  1. Create a file called main.py:
import slint
# slint.loader will look in `sys.path` for `app-window.slint`.
class App(slint.loader.app_window.AppWindow):
@slint.callback
def request_increase_value(self):
self.counter = self.counter + 1
app = App()
app.run()
python
  1. Run it with uv run main.py.

Exported components are exposed as Python classes. To access such a class, you have two options:

  1. Call load_file. The returned object is a namespace that provides every exported component that inherits Window:

    import slint
    components = slint.load_file("app.slint")
    main_window = components.MainWindow()
    python
  2. Use Slint’s auto-loader, which lazily loads .slint files from sys.path:

    import slint
    main_window = slint.loader.app.MainWindow()
    python

Callbacks declared in .slint files are visible as callable properties on the component instance. Assign a Python callable to set a handler, or use the callback decorator when sub-classing:

import slint
class Component(slint.loader.my_component.MyComponent):
@slint.callback
def clicked(self):
print("hello")
component = Component()
python

Set array properties from Python by passing subclasses of Model. Use ListModel to construct a model from an iterable:

component.model = slint.ListModel([1, 2, 3])
component.model.append(4)
del component.model[0]
python

Each type used for properties in the Slint language translates to a specific Python type:

.slint typePython type
intint
floatfloat
stringstr
colorColor
brushBrush
imageImage
styled-textStyledText
data-transferDataTransfer
length, physical-length, duration, anglefloat
structuredict / Struct
arrayModel

For the full set of classes and module-level functions, see the API section in the sidebar.


© 2026 SixtyFPS GmbH