栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【tkinter】云母特效

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【tkinter】云母特效

tkinter云母特效
  • 注意事项
  • 前言
    • 安装库
    • 使用云母特效
      • 完整代码
      • 效果预览
    • 补充
      • 完整代码
      • 效果预览
    • 可选项
        • darkdetect简单使用
      • 完整代码(标题栏改变)①
      • 完整代码(整个窗口改变)②

注意事项

这篇论文仅对Windows11系统有效,如果是macOs、Linux及其他系统的都无法正常使用。

前言

有次我在网上搜一些资料时,无意间找到了一个网站谈论,可以在Python实现云母特效。于是我就点了进去,发现这是用win32做出来的,兴致勃勃地看了起来。我现在也会使用了。就把这期教程分享给大家学习

安装库

因为这个库是使用win32进行开发的,所以要先下载pywin32才能进行使用,在终端输入以下代码安装pywin32库

pip install pywin32 -i https://pypi.tuna.tsinghua.edu.cn/simple/

之后就可以安装云母特效库了。库可以在pypi里找到,叫做win32mica。也是一样在终端输入以下代码进行安装win32mica库

pip install win32mica -i https://pypi.tuna.tsinghua.edu.cn/simple/
使用云母特效

首先我们来看一下官方示例

import tkinter as tk
from ctypes import windll
try:
    import win32mica as mc
except ImportError:
    import os
    os.system("pip install win32mica")


app=tk.Tk()
app.title("Tk Dark")
app.configure(bg="#000000")
app.wm_attributes("-transparent", "#000000")
app.update()
HWND=windll.user32.GetParent(app.winfo_id())
mc.ApplyMica(HWND, ColorMode=mc.MICAMODE.DARK)


app2=tk.Tk()
app2.title("Tk Light")
app2.configure(bg="#000000")
app2.wm_attributes("-transparent", "#000000")
app2.update()
HWND=windll.user32.GetParent(app2.winfo_id())
mc.ApplyMica(HWND, ColorMode=mc.MICAMODE.LIGHT)


app.mainloop()

其实这也并不复杂,首先导入库

import win32mica as mc
import tkinter as tk
from ctypes import windll

然后创建一个窗口

app = tk.Tk()
# 这是个十分重要的一步,不用的话将显示不出效果
app.update()
# 如果想要改为深色模式。将mc.MICAMODE.LIGHT改为mc.MICAMODE.DARK即可。
mc.ApplyMica(windll.user32.GetParent(app.winfo_id()), mc.MICAMODE.LIGHT)

最后消息循环,运行窗口

app.mainloop()
完整代码
import win32mica as mc
import tkinter as tk
from ctypes import windll

app = tk.Tk()
# 这是个十分重要的一步,不用的话将显示不出效果
app.update()
# 如果想要改为深色模式。将mc.MICAMODE.LIGHT改为mc.MICAMODE.DARK即可。
mc.ApplyMica(windll.user32.GetParent(app.winfo_id()), mc.MICAMODE.LIGHT)

app.mainloop()

效果预览


可以看到标题栏变了

补充

我们可以看到,这个也只是标题栏变了,但窗口没有变,这是因为,如果要改变整个窗口的话会出现一些问题。所以改到补充,如果真的需要的话,那么就按下方指示操作:
要想使窗口也变透明,就选取一个符合本地的颜色。我们就在app.mainloop之前添加代码

# 可以更改这里的颜色,但是要使两个颜色一样才行
app.configure(background=""#ffffff) 
app.attributes("-transparent", "#ffffff")
完整代码
import win32mica as mc
import tkinter as tk
from ctypes import windll

app = tk.Tk()
# 这是个十分重要的一步,不用的话将显示不出效果
app.update()
# 如果想要改为深色模式。将mc.MICAMODE.LIGHT改为mc.MICAMODE.DARK即可。
mc.ApplyMica(windll.user32.GetParent(app.winfo_id()), mc.MICAMODE.LIGHT)
# 可以更改这里的颜色,但是要使两个颜色一样才行
app.configure(background="#ffffff")
app.attributes("-transparent", "#ffffff")

app.mainloop()

效果预览


这是我们可以看到整个窗口都变了

可选项

我们在使用这个库时候,想将云母颜色设为本地化的,就可以使用darkdetect库,先获取本地主题颜色,再进行检测调整。

pip install darkdetect -i https://pypi.tuna.tsinghua.edu.cn/simple/
darkdetect简单使用
import darkdetect

print(darkdetect.isLight())  # 检测是否是浅色主题

print(darkdetect.isDark())   # 检测是否是深色主题

首先导入darkdetect库

import darkdetect

我们就可以使用这个检测是否是浅色主题,如果是浅色主题就将窗口的主题调为浅色,如果是深色主题就将窗口的主题调为深色。所以可以使用以下代码选择哪种主题

if darkdetect.isLight():
    theme = mc.MICAMODE.LIGHT
elif darkdetect.isDark():
    theme = mc.MICAMODE.DARK
mc.ApplyMica(windll.user32.GetParent(app.winfo_id()), theme)
完整代码(标题栏改变)①
import win32mica as mc
import tkinter as tk
import darkdetect
from ctypes import windll

app = tk.Tk()
# 这是个十分重要的一步,不用的话将显示不出效果
app.update()
# 如果想要改为深色模式。将mc.MICAMODE.LIGHT改为mc.MICAMODE.DARK即可。
if darkdetect.isLight():
    theme = mc.MICAMODE.LIGHT
elif darkdetect.isDark():
    theme = mc.MICAMODE.DARK
mc.ApplyMica(windll.user32.GetParent(app.winfo_id()), theme)

app.mainloop()

完整代码(整个窗口改变)②
import win32mica as mc
import tkinter as tk
import darkdetect
from ctypes import windll

app = tk.Tk()
# 这是个十分重要的一步,不用的话将显示不出效果
app.update()
# 如果想要改为深色模式。将mc.MICAMODE.LIGHT改为mc.MICAMODE.DARK即可。
if darkdetect.isLight():
    theme = mc.MICAMODE.LIGHT
elif darkdetect.isDark():
    theme = mc.MICAMODE.DARK
mc.ApplyMica(windll.user32.GetParent(app.winfo_id()), theme)
# 可以更改这里的颜色,但是要使两个颜色一样才行
app.configure(background="#ffffff")
app.attributes("-transparent", "#ffffff")

app.mainloop()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1030899.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号