Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Python projection of Windows runtime (WinRT) types.

License

pywinrt/pywinrt

Repository files navigation

logo

PyWinRT

Access Windows Runtime (WinRT) APIs directly from Python! 🚀

🛠️ Overview

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())

📚 Documentation

📖 Explore the full documentation here: PyWinRT Documentation

History

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.

Evolution of PyWinRT:

  • 🗓️ 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 original winrt.
  • 🗓️ Starting March 2025: Additional top-level namespaces winui2 and winui3 added for projections of Window UI toolkits.

⚙️ PyWinRT.exe

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.

🔗 Pre-compiled Binary

A pre-compiled binary version of the PyWinRT tool is available via NuGet.

About

Python projection of Windows runtime (WinRT) types.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 38

Languages