Skip to main content
qtframelesskit logo

qtframelesskit

Modern, cross-Qt frameless window framework for Windows in pure Python.

PyPI Version Python Versions PySide6 PyQt6 Platform License


Overview

qtframelesskit is a modern, lightweight, pure-Python framework for building native-feeling frameless windows in Qt on Windows.

Standard Qt frameless windows (Qt.WindowType.FramelessWindowHint) strip away crucial operating system capabilities: native DWM drop shadows, smooth window resize borders, Windows 11 Snap Layout menus, and modern backdrop materials like Mica and Acrylic.

qtframelesskit restores these native Win32 window mechanics through ctypes and pywin32—with zero C++ compilation or binary wheel dependencies required.


Screenshots

Windows 11

qtframelesskit Windows 11 Showcase

Windows 10

qtframelesskit Windows 10 Showcase

Installation

Install qtframelesskit with your preferred Qt binding:

# With PySide6 (recommended)
pip install qtframelesskit[pyside6]

# With PyQt6
pip install qtframelesskit[pyqt6]

# If you already have a Qt binding installed
pip install qtframelesskit

Quick Start

1. Standard Frameless Window

A standard frameless window featuring native DWM drop shadows, rounded corners, custom border color, and full Snap Layouts support:

import sys
from PySide6.QtWidgets import QApplication, QLabel
from qtframelesskit import FramelessMainWindow, WindowCornerPreference


class MainWindow(FramelessMainWindow):
    def __init__(self) -> None:
        super().__init__()
        self.setWindowTitle("QtFrameless Demo")
        self.resize(800, 500)

        # Configure Windows 11 styling
        self.windowCornerPreference = WindowCornerPreference.ROUND
        self.borderColor = "#696969"

        # Add content to central widget
        centralWidget = self.centralWidget()
        if centralWidget is not None and centralWidget.layout() is not None:
            centralWidget.layout().addWidget(QLabel("Welcome to qtframelesskit!"))


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

2. Windows 11 Mica MainWindow

Leverage the native Windows 11 Mica backdrop material:

import sys
from PySide6.QtWidgets import QApplication, QLabel
from qtframelesskit import FramelessMicaMainWindow, WindowCornerPreference


class MicaWindow(FramelessMicaMainWindow):
    def __init__(self) -> None:
        super().__init__(isAlt=False)
        self.setWindowTitle("Windows 11 Mica")
        self.resize(800, 500)
        self.windowCornerPreference = WindowCornerPreference.ROUND

        centralWidget = self.centralWidget()
        if centralWidget is not None and centralWidget.layout() is not None:
            centralWidget.layout().addWidget(QLabel("Native Mica backdrop window"))


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MicaWindow()
    window.show()
    sys.exit(app.exec())

Tip: Set isAlt=True or call self.setIsAlt(True) to enable Mica Alt (tabbed material).

3. Windows Fluent Acrylic MainWindow

Apply native Windows Fluent Acrylic blur-behind material with custom tint color:

import sys
from PySide6.QtWidgets import QApplication, QLabel
from qtframelesskit import FramelessAcrylicMainWindow, WindowCornerPreference


class AcrylicWindow(FramelessAcrylicMainWindow):
    def __init__(self) -> None:
        # Tint format: RRGGBBAA
        super().__init__(gradientColor="20202099")
        self.setWindowTitle("Windows Acrylic Material")
        self.resize(800, 500)
        self.windowCornerPreference = WindowCornerPreference.ROUND

        centralWidget = self.centralWidget()
        if centralWidget is not None and centralWidget.layout() is not None:
            centralWidget.layout().addWidget(QLabel("Native Acrylic blur backdrop"))


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = AcrylicWindow()
    window.show()
    sys.exit(app.exec())

4. Integrated Title Bar MenuBar & Centered Title

Seamlessly embed a QMenuBar directly into the title bar alongside a centered window title:

import sys
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication
from qtframelesskit import FramelessMainWindow


class Window(FramelessMainWindow):
    def __init__(self) -> None:
        super().__init__()
        self.setWindowTitle("Example MainWindow")
        self.resize(800, 500)

        # 1. Center the title in the title bar
        self.getTitleBar().setTitleAlignment(Qt.AlignmentFlag.AlignCenter)

        # 2. Add menus directly to the integrated title bar menu bar
        menuBar = self.menuBar()
        fileMenu = menuBar.addMenu("File(&F)")
        fileMenu.addAction("New(&N)")
        fileMenu.addAction("Open(&O)")

        editMenu = menuBar.addMenu("Edit(&E)")
        editMenu.addAction("Undo(&U)")
        editMenu.addAction("Redo(&R)")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec())

Windows Compatibility

qtframelesskit automatically detects the host Windows OS build at runtime and gracefully enables or falls back on visual effects:

Feature Windows 11 22H2+
(Build ≥ 22621)
Windows 11 21H2
(Build ≥ 22000)
Windows 10 1809+
(Build ≥ 17763)
Frameless DWM Drop Shadows Full Full Full
Snap Layouts Hover Menu Full Full —
DWM Rounded Corners Full Full —
Mica Material Full Full —
Mica Alt (Tabbed Material) Full — —
Acrylic Blur-Behind Full Full Full
Dark / Light Theme Sync Full Full Full
Per-Monitor DPI Scaling Full Full Full

Note: On non-Windows platforms, importing qtframelesskit raises PlatformNotSupportedError.


Acknowledgments & Inspiration

Special thanks and credit to the open-source projects that inspired and informed this framework:

  • qwindowkit by stdware: An outstanding C++ window customization framework for Qt, which served as a primary architectural inspiration for native frameless mechanics, Windows 11 Snap Layout hit-testing, and modern DWM composition patterns.

License

This project is licensed under the terms of the MIT License.

Release files for qtframelesskit 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qtframelesskit 0.1.0
File Size Uploaded
qtframelesskit-0.1.0.tar.gz 70.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for qtframelesskit 0.1.0
File Interpreter ABI Platform
qtframelesskit-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 113.4 kB

Release files / qtframelesskit-0.1.0.tar.gz

Download URL qtframelesskit-0.1.0.tar.gz
Size 70.4 kB
Tags Source
SHA-256 checksum
How to use checksums
87397cd5e7159f80698d3a4d2928aefc388223a766a1513a1549c74d39287a60
BLAKE2b-256 checksum
How to use checksums
787bd3c4a094e384fca8f960af3543bc4d72619aa6054bdd14f20aa1c959e1e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / qtframelesskit-0.1.0-py3-none-any.whl

Download URL qtframelesskit-0.1.0-py3-none-any.whl
Size 43.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b880bb867ccd00190c5cf164d346f8472a8fea4be486b8e9d6eed433aef54431
BLAKE2b-256 checksum
How to use checksums
276d4fd7c4e2e534a2860f196ef0524564e87d47035145bf8aff09aaa1ab19bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.0

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page