# tkinter研究 我将在此写入一些关于tkinter扩展功能的研究成果,其中研究最多的是Windows平台下的 --- # 关于如何实现任务栏进度(Windows) ## 研究参考 _https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nn-shobjidl_core-itaskbarlist3_ _https://stackoverflow.com/questions/17607415/python-tkinter-windows-7-taskbar-progress_ _https://pypi.org/project/PyTaskbarProgress/_ `PyTaskbar`是一个调用Shell进行开发的功能库,可以控制窗口的进度条 ## 使用方法 ### 安装所需库 ```bash pip install PyTaskbarProgress ``` ### 示例 ```python from PyTaskbar import Progress from tkinter import ttk, Tk from ctypes import windll Root = Tk() Progress = Progress(Root.winfo_id()) # 需填入窗口的窗柄 Progress.init() # 必须要初始化 Progress.setProgress(50) # 注意,这里值只能是0~100之间的数 Normal = ttk.Button(Root, text="正常", command=lambda: Progress.setState("normal")) Normal.grid(column=0, row=0) Warning = ttk.Button(Root, text="警告", command=lambda: Progress.setState("warning")) Warning.grid(column=1, row=0) Error = ttk.Button(Root, text="错误", command=lambda: Progress.setState("error")) Error.grid(column=0, row=1) Loading = ttk.Button(Root, text="加载", command=lambda: Progress.setState("loading")) Loading.grid(column=1, row=1) Done = ttk.Button(Root, text="完成", command=lambda: Progress.setState("done")) Done.grid(column=0, row=2) Root.mainloop() ``` # 关于如何实现系统托盘(Windows) ## 研究参考 _https://stackoverflow.com/questions/62372144/how-to-add-system-tray-to-my-tkinter-application-and-avoid-using-lots-of-pywin32/62373030#62373030_ _https://sourceforge.net/projects/tktable/files/winico/_ _https://fossil.mpcjanssen.nl/winico/dir?ci=tip_ _https://wiki.tcl-lang.org/page/winico_ _https://pypi.org/project/tkwinico/_ `Winico`是一个用tcl实现的扩展库,可以用于创建系统托盘图标。我已经绑定好了`Winico`库了,并分发在`PyPi`上面 ## 使用方法 ### 安装所需库 64位版本 ```bash pip install tkwinico==1.2.71 ``` 32位版本 ```bash pip install tkwinico==1.2.6 ``` ### 示例 ```python from tkwinico import * import tkinter as tk Window = tk.Tk() def CallBack(Message, X, Y): # 时间处理 if Message == WM_RBUTTONDOWN: Menu = tk.Menu(tearoff=False) Menu.add_command(label="Quit", command=Window.quit) # 创建菜单选项 Menu.tk_popup(X, Y) # 显示菜单 taskbar(ADD, load(APPLICATION), (Window.register(CallBack), MESSAGE, X, Y)) Window.mainloop() ``` ### 额外说明 在库里面你可以找到一个html文件,这个就是这个库的使用介绍,可以照着这个文档进行使用。 # 关于如何启用Windows11的云母材质 ## 研究参考 ![](https://learn.microsoft.com/zh-cn/windows/apps/design/signature-experiences/images/materials_mica_hero_1880.png) _https://pythonawesome.com/win32mica-a-simple-module-to-add-the-mica-effect-on-legacy-python-windows/_ _https://github.com/martinet101/win32mica_ _https://blog.csdn.net/bangbang_BON/article/details/126531053?spm=1001.2014.3001.5502_ `win32mica`是一个使用ctypes进行调用win32进行实现启用云母材质的功能库。 ## 使用方法 ### 安装所需库 ```bash pip install win32mica ``` ### 示例 ```python from tkinter import Tk from win32mica import ApplyMica, MICAMODE from ctypes import windll Root = Tk() Root.title("Mica") Root.configure(background="#000000") Root.update() ApplyMica(windll.user32.GetParent(Root.winfo_id()), ColorMode=MICAMODE.DARK) Root.mainloop() ``` ```python from tkinter import Tk from win32mica import ApplyMica, MICAMODE from ctypes import windll Root = Tk() Root.title("Mica") Root.configure(background="#ffffff") Root.update() ApplyMica(windll.user32.GetParent(Root.winfo_id()), ColorMode=MICAMODE.LIGHT) Root.mainloop() ```