README.md 9.2 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 13
[![ChangeLog](https://img.shields.io/badge/ChangeLog-2023/07/06-orange)](CHANGELOG.md)
[![ToDo](https://img.shields.io/badge/ToDo-15-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?logo=about.me)](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.7`
* Release/发布日期 : 2023/07/06 (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.7
小康2022 已提交
39 40
```

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

小康2022 已提交
43 44
* Version/最新版本 : `2.6.7.dev1` (第 2 个预发布版本)
* Release/发布日期 : 2023/07/05 (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.7.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.7`**
小康2022 已提交
81

小康2022 已提交
82
> **Note**  
小康2022 已提交
83 84
> 现将开发版(`tkintertools-dev`)合并到稳定版(`tkintertools`)中,版本号格式变为 `*.*.*.dev*`,大家在通过 pip 工具进行下载时请注意!近段时间内将删除 PyPi 上的 tkintertools-dev!  
> tkintertools 的介绍和使用教程均在 Wiki 中,[点我传送](https://github.com/Xiaokang2022/tkintertools/wiki)
小康2022 已提交
85

小康2022 已提交
86
下面是本次稳定版本(`v2.6.6` -> `v2.6.7`)的更新内容条目:
小康2022 已提交
87

小康2022 已提交
88 89
- [X] The function `rotate` of the 3D submodule adds the keyword `axis` to provide the function of rotating around the axis  
3D 子模块的函数 `rotate` 新增关键字参数 `axis` 来提供绕轴旋转的功能
小康2022 已提交
90 91 92 93 94 95 96 97 98 99
- [X] Added constants `ROTATE_CENTER`, `ORIGIN_COORDINATE`, `ORIGIN_SIZE`, `ORIGIN_WIDTH`, `ORIGIN_FILL` and `ORIGIN_OUTLINE`  
新增常量 `ROTATE_CENTER``ORIGIN_COORDINATE``ORIGIN_SIZE``ORIGIN_WIDTH``ORIGIN_FILL``ORIGIN_OUTLINE`
- [X] Class `Tk` and `Toplevel` Added keyword arguments `alpha`, `toolwindow`, `topmost` and `transparentcolor`  
`Tk``Toplevel` 新增关键字参数 `alpha``toolwindow``topmost``transparentcolor`
- [X] Fixed a bug where the class `Text` would report an error when scrolling with the mouse wheel  
修复了类 `Text` 在使用鼠标滚轮滚动时会报错的 bug
- [X] Optimized the internal implementation of the functions `translate` and `scale` to improve performance  
优化函数 `translate``rotate``scale` 内部的实现,提高了性能
- [X] A large number of incomplete docstrings have been modified and improved  
修改和完善了大量的不完整的文档注释
小康2022 已提交
100 101
- [X] Optimized some code and type hints  
优化了部分代码和类型提示
小康2022 已提交
102 103
- [X] Change some methods of some classes to protection methods  
将部分类的部分方法更改为保护方法
小康2022 已提交
104 105
- [X] Removed abstract classes and abstract methods  
移除了抽象类和抽象方法
小康2022 已提交
106 107

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

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

小康2022 已提交
111 112
* 按住鼠标左键拖动可以旋转这多个几何体;
* 按住鼠标右键拖动可以移动这些几何体在空间中的位置;
小康2022 已提交
113
* 滚动鼠标中键可以放大和缩小画面;
小康2022 已提交
114
* 这多个几何体会自动地旋转以及上下浮动;
小康2022 已提交
115

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

小康2022 已提交
118
![news](news.gif)
小康2022 已提交
119

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

```python
小康2022 已提交
123 124 125 126 127 128 129
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 已提交
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172

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')


def spin():
    """ 自动旋转 """
    for geo in space.geos():
        geo.rotate(dz=0.01)


def floating(value):
    """ 上下浮动 """
    for geo in space.geos():
        geo.translate(dz=math.sin(value))


def animation(value=0):
    """ 形成动画 """
    spin()
    floating(value)
    space.space_sort()  # 给它们的空间位置排序以正确显示
    for geo in space.geos():
        geo.update()
    space.after(10, animation, value+math.pi/60)


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()  # 空间前后位置排序


animation()
root.bind('<Key-equal>', scale)  # 绑定等号按键
root.bind('<Key-minus>', scale)  # 绑定减号按键
小康2022 已提交
173
root.mainloop()  # 消息事件循环
小康2022 已提交
174 175 176 177
```

</details>

小康2022 已提交
178 179
More/更多👇
-----------
小康2022 已提交
180

小康2022 已提交
181 182 183 184 185 186 187 188 189
[![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)