Access Windows Runtime (WinRT) APIs directly from Python! π
What can you do with PyWinRT? π€
- π Access hardware, like Bluetooth, USB, serial ports, cameras, and more from Python.
- π₯οΈ Access Windows OS features like notifications and screen capture from Python.
- ποΈ Write WinUI 2 or WinUI 3 apps using Python.
Want to try itβInstall uv and run the following command to execute this example script:
uv run --script https://raw.githubusercontent.com/pywinrt/pywinrt/refs/heads/main/samples/text_to_speech.py
# /// script
# requires-python = ">=3.10"
# dependencies = [
# "winrt-runtime",
# "winrt-Windows.Foundation",
# "winrt-Windows.Media.SpeechSynthesis",
# "winrt-Windows.Media.Playback",
# "winrt-Windows.Storage",
# "winrt-Windows.Storage.Streams",
# ]
# ///
import asyncio
from winrt.system import Object
from winrt.windows.media.speechsynthesis import SpeechSynthesizer
from winrt.windows.media.playback import MediaPlayer, MediaPlayerAudioCategory
async def main():
synth = SpeechSynthesizer()
stream = await synth.synthesize_text_to_stream_async("Hello, World!")
media_ended_event = asyncio.Event()
loop = asyncio.get_running_loop()
def on_media_ended(sender: MediaPlayer, args: Object):
loop.call_soon_threadsafe(media_ended_event.set)
player = MediaPlayer()
player.audio_category = MediaPlayerAudioCategory.SPEECH
player.set_stream_source(stream)
player.add_media_ended(on_media_ended)
player.play()
await media_ended_event.wait()
asyncio.run(main())
π Explore the full documentation here: PyWinRT Documentation
PyWinRT is a community-supported fork of the pywinrt
tool from the Microsoft xlang project.
This repository contains:
- The code generation tool (
PyWinRT.exe
). - Python bindings for the Windows SDK generated by this tool.
- ποΈ April 2019 - Feburary 2021: Microsoft developed and published the monolithic winrt package.
- ποΈ January 2022 - August 2023: Community released updates as winsdk.
- ποΈ Starting September 2023: Bindings are now modular and published by the community as separate packages, one per Windows SDK namespace. The top-level namespace has reverted from
winsdk
to the originalwinrt
. - ποΈ Starting March 2025: Additional top-level namespaces
winui2
andwinui3
added for projections of Window UI toolkits.
PyWinRT is a code generation tool that is used alongside cppwinrt to generate Python bindings for Windows Runtime APIs. It supports:
- The Windows SDK.
- Custom components.
A pre-compiled binary version of the PyWinRT tool is available via NuGet.