Skip to main content

Apply mica background (if supported) and immersive dark mode to Windows 11 Win32 apps made with python, such as Tkinter or PyQt/PySide apps

Project description

Win32mica: A simple module to add the Mica effect and enable immersive dark mode on Python UI Windows

The aim of this project is to apply the Mica effect and enable immersive dark mode on python applications made with Python, like Tkinter, PyQt/PySide, WxPython, Kivy, etc.
This will work on any windows version, including the new released dev builds where the mica API is public.

View this project on PyPi View this project on GitHub

Installation:

python -m pip install win32mica

Requirements:

  • Windows 11
  • A window set to not have a transparent background and to have extended composition enabled* (It might work with other settings, but nothing is guaranteed.)
  • The hWnd (identifier) of that window. More info: what is a hWnd?
  • OPTIONAL: The window must have semi-transparent widgets/controls in order to recreate the transparency effect on the controls.
  • OPTIONAL: Know if Windows has dark or light mode enabled. This can be checked with the darkdetect module

Usage:

######################################################################
#                                                                    #
# Those examples are oversimplified, please see the examples/ folder #
# for detailed usage with each UI library.                           #
#                                                                    #
######################################################################

hwnd = window.winId().__int__() # Get the hWnd of your window

from win32mica import ApplyMica, MicaTheme, MicaStyle

mode = MicaTheme.DARK  # Dark mode mica effect
mode = MicaTheme.LIGHT # Light mode mica effect
mode = MicaTheme.AUTO  # Apply system theme, and change it if system theme changes

style = MicaStyle.DEFAULT # Default backdrop effect
style = MicaStyle.ALT     # Alt backdrop effect

def callbackFunction(NewTheme):
    if newTheme == MicaTheme.DARK:
        print("Theme has changed to dark!")
    else:
        print("Theme has changed to light!")

win32mica.ApplyMica(HWND=hwnd, Theme=mode, Style=style, OnThemeChange=callbackFunction)

#    Parameters
#    ----------
#    HWND : int
#        The handle to the window on which the effect has to be applied
#    Theme : MicaTheme, int
#        The theme of the backdrop effect: MicaTheme.DARK, MicaTheme.LIGHT, MicaTheme.AUTO
#    Style : MicaStyle, int
#        The style of the mica backdrop effect: MicaStyle.DEFAULT, MicaStyle.ALT
#    OnThemeChange : function
#        A callback function that receives one parameter to call when the system theme changes (will only work if Theme is set to MicaTheme.AUTO)
#        The passed parameter will be either MicaTheme.DARK or MicaTheme.LIGHT, corresponding to the new system theme

You can check out the examples folder for detailed use in Tk and PySide/PyQt.

Result:

image
image

Those are PySide2 windows with custom widgets.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

win32mica-3.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

win32mica-3.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file win32mica-3.0.tar.gz.

File metadata

  • Download URL: win32mica-3.0.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for win32mica-3.0.tar.gz
Algorithm Hash digest
SHA256 87dcbd7d098bc9e778bd7035a81831ddd952e37ac7eafbc82105fc316a629945
MD5 f478fc9ac727cd0be03713be97cee087
BLAKE2b-256 9c918aecf60b274ac4192f88ded4b4f6c9b3ed4868eecc845b5479b49337dc92

See more details on using hashes here.

File details

Details for the file win32mica-3.0-py3-none-any.whl.

File metadata

  • Download URL: win32mica-3.0-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for win32mica-3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8e4c0454f886aad095197adfcc24c58bc83b5f26bb951c461dc1509448600b9d
MD5 26a0641ab32beb5c1b46a5aa8545ec51
BLAKE2b-256 4437fe689f99ebaf08c082fd0fce61f38b92d88b047e9270d58f4f04caae9a0f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page