README.md 8.9 KB
Newer Older
小康2022's avatar
小康2022 已提交
1
<div align="center">
小康2022 已提交
2 3 4 5 6 7 8 9

# 🚀tkintertools🚀

<img src="tkt.png" style="height: 128px" alt="Logo" />

`tkintertools` 模块是 `tkinter` 模块的一个辅助模块\
The `tkintertools` module is an auxiliary module of the `tkinter` module

小康2022 已提交
10 11
[![Version](https://img.shields.io/pypi/v/tkintertools?label=Version)](.)
[![License](https://img.shields.io/pypi/l/tkintertools?label=License)](LICENSE.txt)
小康2022 已提交
12
[![ChangeLog](https://img.shields.io/badge/ChangeLog-2023/08/03-orange)](CHANGELOG.md)
小康2022 已提交
13
[![ToDo](https://img.shields.io/badge/ToDo-16-yellow)](TODO.md)
小康2022 已提交
14
[![Size](https://img.shields.io/github/languages/code-size/Xiaokang2022/tkintertools?label=Size)](tkintertools)
小康2022 已提交
15
[![Wiki](https://img.shields.io/badge/Wiki-14-purple)](https://github.com/Xiaokang2022/tkintertools/wiki)\
小康2022 已提交
16
[![Downloads](https://img.shields.io/pypi/dm/tkintertools?label=Downloads&logo=pypi)](https://pypistats.org/packages/tkintertools)
小康2022 已提交
17
[![Owner](https://img.shields.io/badge/Owner-Xiaokang2022-white)](https://github.com/Xiaokang2022)
小康2022 已提交
18 19 20 21 22
[![Blog](https://img.shields.io/badge/Blog-小康2022@CSDN-red)](https://xiaokang2022.blog.csdn.net)
[![Email](https://img.shields.io/badge/Email-2951256653@qq.com-cyan)](mailto:2951256653@qq.com)

[![Insights](https://repobeats.axiom.co/api/embed/ab8fae686a5a96f91fa71c40c53c189310924f5e.svg)](https://github.com/Xiaokang2022/tkintertools/pulse)

小康2022's avatar
小康2022 已提交
23 24
</div>

小康2022 已提交
25 26 27 28
Install/模块安装👇
-----------------

### Stable Version/稳定版本
小康2022's avatar
小康2022 已提交
29

小康2022 已提交
30 31
* Version/最新版本 : `2.6.8`
* Release/发布日期 : 2023/08/03 (UTC+08)
小康2022's avatar
小康2022 已提交
32

小康2022 已提交
33
这个是目前的最新稳定版,相对于开发版本而言比较稳定,bug 大体上是没有那么多的,推荐使用这个。稳定版和开发版相比,它在发布之前有个测试的步骤,经过测试之后(各项功能正常运行,多平台兼容)才会发布。
小康2022's avatar
小康2022 已提交
34

小康2022 已提交
35
**PIP Cmd/安装命令:**
小康2022's avatar
小康2022 已提交
36

小康2022 已提交
37
```
小康2022 已提交
38
pip install tkintertools==2.6.8
小康2022 已提交
39 40
```

小康2022 已提交
41
### Development Version/开发版本
小康2022's avatar
小康2022 已提交
42

小康2022 已提交
43
* Version/最新版本 : `2.6.8.dev1` (第 2 个预发布版本)
小康2022 已提交
44
* Release/发布日期 : 2023/07/28 (UTC+08)
小康2022's avatar
小康2022 已提交
45

小康2022 已提交
46
这个是我正在开发的版本,可能有新功能,bug 可能会比较多,但也可能会比原来的版本更加稳定。开发版没有经过多操作系统的测试,仅能保证在 Windows 系统下运行所有功能,在其他的操作系统上,可能有部分功能无法正常运行。大家可以在 Issues 中提出一些建议,我可能会适当采纳一些并在开发版本中更改或实现。
小康2022 已提交
47

小康2022 已提交
48 49
**PIP Cmd/安装命令:**

小康2022's avatar
小康2022 已提交
50
```
小康2022 已提交
51
pip install tkintertools==2.6.8.dev1
小康2022's avatar
小康2022 已提交
52 53
```

小康2022 已提交
54 55
> **Warning**  
> 开发版仅作示例,各函数或类的 API 并非最终确定结果,直接使用开发版可能导致后续无法与稳定版兼容!  
小康2022 已提交
56
> 若不指定具体的版本号,则会下载最新的稳定版本,也就是说,开发版本只能通过指定的版本号获取!
小康2022 已提交
57

小康2022 已提交
58
### Requirements/环境需求
小康2022 已提交
59

小康2022 已提交
60
目前 **稳定版** 在以下操作系统中已经测试通过:
小康2022 已提交
61 62 63 64 65 66 67

![Windows10](https://img.shields.io/badge/Windows-10-green?logo=windows)
![Windows11](https://img.shields.io/badge/Windows-11-green?logo=windows11)
![Ubuntu22.04](https://img.shields.io/badge/Ubuntu-22.04-green?logo=ubuntu)

可能还有其他的操作系统也是可以运行 tkintertools 的,我没有进行更多的验证。  
没有任何额外的依赖包(除了一般 Python 内置的 tkinter),但只支持以下 Python 版本:
小康2022 已提交
68

小康2022 已提交
69 70 71 72 73
![Python3.8.*](https://img.shields.io/badge/Python-3.8.*-blue?logo=python)
![Python3.9.*](https://img.shields.io/badge/Python-3.9.*-blue?logo=python)
![Python3.10.*](https://img.shields.io/badge/Python-3.10.*-blue?logo=python)
![Python3.11.*](https://img.shields.io/badge/Python-3.11.*-blue?logo=python)
![Python3.12.*](https://img.shields.io/badge/Python-3.12.*-blue?logo=python)
小康2022 已提交
74

小康2022 已提交
75 76
News/最新功能👇
--------------
小康2022 已提交
77

小康2022 已提交
78 79
### Release Notes/版本说明

小康2022 已提交
80
**最新版本: `tkintertools-v2.6.8`**
小康2022 已提交
81 82 83 84

> **Note**   
> tkintertools 的介绍、使用教程和开发文档均在 [Wiki](https://github.com/Xiaokang2022/tkintertools/wiki) 中,大家可前往查阅

小康2022 已提交
85
下面是本次开发版本(`v2.6.7` -> `v2.6.8`)的更新内容条目:
小康2022 已提交
86

小康2022 已提交
87 88
- [X] If the user's Python includes a PIL library, PIL is automatically invoked when autoscaling images to extend the functionality of the class `PhotoImage`  
若使用者的 Python 包含有 PIL 库,则在自动缩放图片时自动调用 PIL 来扩展类 `PhotoImage` 的功能
小康2022 已提交
89 90 91 92
- [X] Added class `Animation` to achieve more efficient, convenient and functional animation effects  
新增类 `Animation` 来实现更加高效、更加方便和功能性更强的动画效果
- [X] Added constant `CONTROL`  
新增常量 `CONTROL`
小康2022 已提交
93 94
- [X] Fixed the bug that widgets `Entry` and `Text` would report an error when pasting text  
修复控件 `Entry``Text` 粘贴文本时会报错的 bug
小康2022 已提交
95 96
- [X] Modified the name of the constant `FRAMES` to `FPS`  
修改常量 `FRAMES` 的名称为 `FPS`
小康2022 已提交
97 98
- [X] The parameter `precision` of the method `zoom` of class `PhotoImage` was changed from positional argument to keyword argument  
`PhotoImage` 的方法 `zoom` 的参数 `precision` 由位置参数变更为关键字参数
小康2022 已提交
99 100 101 102
- [X] The function `move` is about to be deprecated, please replace it with the new class `Animation`  
函数 `move` 即将被弃用,请用新类 `Animation` 来代替
- [X] The class `Singleton` is about to be deprecated and singleton mode classes will no longer be available in subsequent releases  
`Singleton` 即将被弃用,后续版本中将不再提供单例模式类
小康2022 已提交
103 104

### Template Demo/模板演示
小康2022 已提交
105

小康2022 已提交
106
下面是一个主要新功能的示例程序,运行下面的示例程序时,其拥有以下功能:
小康2022 已提交
107

小康2022 已提交
108
* __效果与之前版本相同,但是代码量更少!__
小康2022 已提交
109 110
* 按住鼠标左键拖动可以旋转这多个几何体;
* 按住鼠标右键拖动可以移动这些几何体在空间中的位置;
小康2022 已提交
111
* 滚动鼠标中键可以放大和缩小画面;
小康2022 已提交
112
* 这多个几何体会自动地旋转以及上下浮动;
小康2022 已提交
113

小康2022 已提交
114
下面是示例程序的效果图(运行环境为 Windows11-Python3.11.4):
小康2022 已提交
115

小康2022 已提交
116
![news](news.gif)
小康2022 已提交
117

小康2022 已提交
118
<details><summary><b>CODE/源代码</b></summary>
小康2022 已提交
119 120

```python
小康2022 已提交
121 122 123 124 125 126 127
import math  # 数学支持

import tkintertools as tkt  # 引入基础模块
from tkintertools import tools_3d as t3d  # 引入 3d 子模块

root = tkt.Tk('3D', 1280, 720)  # 创建窗口
space = t3d.Space(root, 1280, 720, 0, 0)  # 创建空间
小康2022 已提交
128 129 130 131 132 133 134 135 136

for a in -100, 0, 100:
    for b in -100, 0, 100:
        for c in -100, 0, 100:
            t3d.Cuboid(space, a-50, b-50, c-50, 100, 100, 100,  # 创建正方体
                       color_up='white', color_down='yellow', color_left='red',
                       color_right='orange', color_front='blue', color_back='green')


小康2022 已提交
137 138
def animate(value=[0]):  # type: (list[int]) -> None
    """ 动画 """
小康2022 已提交
139 140
    for geo in space.geos():
        geo.rotate(dz=0.01)
小康2022 已提交
141
        geo.translate(dz=math.sin(value[0]))
小康2022 已提交
142
        geo.update()
小康2022 已提交
143 144
    value[0] += math.pi/60
    space.space_sort()
小康2022 已提交
145 146 147 148 149 150 151 152 153 154 155


def scale(event):
    """ 缩放事件 """
    k = 1.05 if event.keysym == 'equal' else 0.95 if event.keysym == 'minus' else 1  # 缩放比率
    for geo in space.geos():  # 遍历所有的几何体(不包括基本 3D 对象)
        geo.scale(k, k, k)  # 缩放
        geo.update()  # 更新改对象的实际画面
    space.space_sort()  # 空间前后位置排序


小康2022 已提交
156
tkt.Animation(space, 1000, callback=lambda _: animate(), loop=True).run()  # 调用类 Animation
小康2022 已提交
157 158
root.bind('<Key-equal>', scale)  # 绑定等号按键
root.bind('<Key-minus>', scale)  # 绑定减号按键
小康2022 已提交
159
root.mainloop()  # 消息事件循环
小康2022 已提交
160 161 162 163
```

</details>

小康2022 已提交
164 165
More/更多👇
-----------
小康2022 已提交
166

小康2022 已提交
167 168 169 170 171 172 173 174 175
[![GitHub](https://img.shields.io/badge/GitHub-仓库根源%20完整无误%20以此为准-blue?logo=github)](https://github.com/Xiaokang2022/tkintertools)
[![Gitee](https://img.shields.io/badge/Gitee-主镜像源%20比较完整%20可能延迟-green?logo=gitee)](https://gitee.com/xiaokang-2022/tkintertools)
[![GitCode](https://img.shields.io/badge/GitCode-次镜像源%20缺少Wiki%20CSDN-yellow)](https://gitcode.net/weixin_62651706/tkintertools)\
[![GitHub Watchers](https://img.shields.io/github/watchers/Xiaokang2022/tkintertools?label=GitHub%20Watchers&color=green)](https://github.com/Xiaokang2022/tkintertools/watchers)
[![GitHub Forks](https://img.shields.io/github/forks/Xiaokang2022/tkintertools?label=GitHub%20Forks)](https://github.com/Xiaokang2022/tkintertools/forks)
[![GitHub Stars](https://img.shields.io/github/stars/Xiaokang2022/tkintertools?label=GitHub%20Stars&color=gold)](https://github.com/Xiaokang2022/tkintertools/stargazers)
[![GitHub Contributors](https://img.shields.io/github/contributors/Xiaokang2022/tkintertools?label=GitHub%20Contributors)](https://github.com/Xiaokang2022/tkintertools/graphs/contributors)
[![GitHub Issues](https://img.shields.io/github/issues/Xiaokang2022/tkintertools?label=GitHub%20Issues)](https://github.com/Xiaokang2022/tkintertools/issues)
[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/Xiaokang2022/tkintertools?label=GitHub%20Pull%20Requests)](https://github.com/Xiaokang2022/tkintertools/pulls)