README.md 3.8 KB
Newer Older
XiangQinxi's avatar
XiangQinxi 已提交
1
# tkinter研究
2
我将在此写入一些关于tkinter扩展功能的研究成果,其中研究最多的是Windows平台下的
XiangQinxi's avatar
XiangQinxi 已提交
3

XiangQinxi's avatar
XiangQinxi 已提交
4 5
---

6
# 关于如何实现任务栏进度(Windows)
XiangQinxi's avatar
XiangQinxi 已提交
7
## 研究参考
8 9
_https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nn-shobjidl_core-itaskbarlist3_

XiangQinxi's avatar
XiangQinxi 已提交
10 11 12 13
_https://stackoverflow.com/questions/17607415/python-tkinter-windows-7-taskbar-progress_

_https://pypi.org/project/PyTaskbarProgress/_

14 15
`PyTaskbar`是一个调用Shell进行开发的功能库,可以控制窗口的进度条

XiangQinxi's avatar
XiangQinxi 已提交
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
## 使用方法
### 安装所需库
```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()
```
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

# 关于如何实现系统托盘(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`上面

## 使用方法
### 安装所需库
XiangQinxi's avatar
XiangQinxi 已提交
68
64位版本
69
```bash
XiangQinxi's avatar
XiangQinxi 已提交
70
pip install tkwinico==1.2.71
71
```
XiangQinxi's avatar
XiangQinxi 已提交
72 73 74 75 76
32位版本
```bash
pip install tkwinico==1.2.6
```

77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

### 示例
```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文件,这个就是这个库的使用介绍,可以照着这个文档进行使用。
XiangQinxi's avatar
XiangQinxi 已提交
101 102 103 104 105

# 关于如何启用Windows11的云母材质
## 研究参考
![](https://learn.microsoft.com/zh-cn/windows/apps/design/signature-experiences/images/materials_mica_hero_1880.png)

XiangQinxi's avatar
XiangQinxi 已提交
106 107
_https://pythonawesome.com/win32mica-a-simple-module-to-add-the-mica-effect-on-legacy-python-windows/_

XiangQinxi's avatar
XiangQinxi 已提交
108 109
_https://github.com/martinet101/win32mica_

XiangQinxi's avatar
XiangQinxi 已提交
110 111
_https://blog.csdn.net/bangbang_BON/article/details/126531053?spm=1001.2014.3001.5502_

XiangQinxi's avatar
XiangQinxi 已提交
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
`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()
```