如何为窗口设置云母特效#

云母特效(Mica)是Windows11系统中一个新的背景材质,使用模糊背景来达到十分优美的界面。而这篇文章也仅限Windows11才能使用。 如果是Windows10、macOS、Linux之类的就还别看了。


安装所需要的库#

首先,我们需要安装一个库,是我在网上查阅教程时看到的,在PyPi中可以找到。使用win32代码开发,原理就是获取窗柄,并设置窗口的材质。 我在快速开始里讲解过win32mica库的安装,没看过的可以去看一下,但如果懒得看就直接在终端输入一下代码进行安装。

python -m pip install win32mica

使用DevWindow#

这是最简单的办法,你只需要使用DevWindow.mica()即可,他就会自动设置匹配的颜色。

from tkdev import DevWindow

Root = DevWindow()
Root.mica()
Root.mainloop()

win32mica使用#

我虽然有发过win32mica的教程在CSDN,但是有些漏了,还是在说一下吧。 首先就是导入win32mica,直接导入就行了。ApplyMica是应用云母材质在窗口,MICAMODE是设置云母的主题,有LIGHT和DARK两种主题,代表浅色和深色。

from win32mica import ApplyMica, MICAMODE

我们需要获取到hWnd,然后使用ApplyMica设置云母材质。 我就直接复制之前的代码,懒得在重写一遍了

浅色模式#

from win32mica import ApplyMica, MICAMODE
from win32gui import GetParent
from tkinter import Tk

hWnd = 0

def Get_hWnd():
    global hWnd
    hWnd = GetParent(Root.winfo_id())
    ApplyMica(hWnd, MICAMODE.LIGHT)
    
Root = Tk()
Root.after(1, Get_hWnd)
Root.mainloop()

深色模式#

from win32mica import ApplyMica, MICAMODE
from win32gui import GetParent
from tkinter import Tk

hWnd = 0

def Get_hWnd():
    global hWnd
    hWnd = GetParent(Root.winfo_id())
    ApplyMica(hWnd, MICAMODE.DARK)
    
Root = Tk()
Root.after(1, Get_hWnd)
Root.mainloop()

扩展#

虽然做好了Mica材质窗口,但还不够,我们需要根据主题修改背景颜色。这里我测试出来与标题栏相互匹配的主题还只有深色模式,浅色模式匹配的还没找到。

主题色 匹配色
DARK #000000
LIGHT 暂无

深色模式#

from win32mica import ApplyMica, MICAMODE
from win32gui import GetParent
from tkinter import Tk

hWnd = 0

def Get_hWnd():
    global hWnd
    hWnd = GetParent(Root.winfo_id())
    ApplyMica(hWnd, MICAMODE.DARK)
    
Root = Tk()
Root.configure(background="#000000")
Root.after(1, Get_hWnd)
Root.mainloop()