tkinter 模块的最强辅助模块 —— tkintertools(万字详解)(一)

简介: tkinter 模块的最强辅助模块 —— tkintertools(万字详解)(一)

模块基本信息

模块名称:tkintertools


模块描述:tkinter 模块的扩展模块


编写作者:小康2022


当前版本:2.5(2022/11/21)


运行要求:Python3.10 及以上版本(新版只需要3.7以及3.7以上)


模块源代码下载地址:tkintertools(最新版)


模块源代码仓库地址:小康2022 / tkintertools · GitCode


模块结构

一、引用模块

① sys:用于检测 Python 版本信息

② tkinter:基础模块

③ typing:用于类型提示

二、常量

COLOR_FILL_BUTTON = '#E1E1E1', '#E5F1FB', '#CCE4F7', '#F0F0F0'      # 默认的按钮内部颜色
COLOR_FILL_TEXT = '#FFFFFF', '#FFFFFF', '#FFFFFF', '#F0F0F0'        # 默认的文本内部颜色
COLOR_OUTLINE_BUTTON = '#C0C0C0', '#4A9EE0', '#4884B4', '#D5D5D5'   # 默认按钮外框颜色
COLOR_OUTLINE_TEXT = '#C0C0C0', '#5C5C5C', '#4A9EE0', '#D5D5D5'     # 默认文本外框颜色
COLOR_TEXT = '#000000', '#000000', '#000000', '#A3A9AC'             # 默认的文本颜色
COLOR_NONE = '', '', '', ''                                         # 透明颜色
BORDERWIDTH = 1     # 默认控件外框宽度
CURSOR = '│'        # 文本光标
FONT = '楷体', 15   # 默认字体
LIMIT = -1          # 默认文本长度
NULL = ''           # 空字符
RADIUS = 0          # 默认控件圆角半径

三、主体结构

1、容器控件类

① Tk:窗口主体,具有处理关联事件和缩放控件及图像的能力

② Toplevel: 顶级窗口,和 Tk 类似,但有着 tkinter 模块原来的 Toplevel 类同样的功能

③ Canvas:画布,用于承载虚拟控件和绘制其他细节

2、虚拟画布基类

① _BaseWidget:内部类,虚拟画布控件基类

② _TextWidget:内部类,虚拟画布文本控件基类

3、虚拟画布控件类

① CanvasLabel:虚拟画布标签类

② CanvasButton:虚拟画布按钮类

③ CanvasEntry:虚拟画布输入框类

④ CanvasText:虚拟画布文本框类

4、工具类

① PhotoImage: 具有加载与缩放 png 图片和解析并播放 gif 图片的功能

5、功能函数

① move_widget:可按照按一定规则(函数)移动控件

② correct_text:修正文本长度,占有一定长度并使其居中、靠左或靠右

③ change_color:产生渐变色及对比色

四、测试程序

测试程序就是直接运行该模块本身的效果(该测试函数名为 test,可引入其并运行以查看测试效果) 。下面的效果就是测试程序运行的结果,说明一下,窗口带有一点透明效果,关闭窗口时会有一个关闭询问(忘记展示出来了 T_T)。这里只展示了虚拟控件的默认外观,它们也可以自定义外观,甚至可以透明,以方便大家使用背景图片来装饰我们的窗口!

1、基本测试

基本测试

2、图像测试

图像测试

3、颜色测试

                                                            颜色测试

模块使用方法

一、基本框架

1、基本框架代码

import tkintertools
root = tkintertools.Tk()  # 创建窗口
canvas = tkintertools.Canvas(root, 960, 540)  # 创建虚拟画布,960和540分别为长度和宽度
canvas.place(x=0, y=0)  # 放置画布
"""
这里写其他代码
"""
root.mainloop()  # 消息事件循环

2、效果展示

代码基础框架

是不是感觉和 tkinter 模块的基本框架差别不大,只是多了一个 Canvas 对吧?对!就这么简单,与原来的 tkinter 模块相比,改变的其实只有一个,那就是控件的承载容器变了。tkinter 模块里面是 Tk,而这里实际上是 Canvas,这一点很重要!

二、容器控件类

1、Tk

用于集中处理 Canvas 容器控件绑定的关联事件以及缩放操作

初始化参数说明

Tk(title: str | None = None,
   geometry: str | None = None,
   minisize: tuple[int, int] | None = None,
   alpha: float | None = None,
   proportion_lock: bool = False,
   shutdown=None,  # type: function | None
   **kw)

title: 窗口标题


geometry: 窗口大小及位置(格式:'宽度x高度+左上角横坐标+左上角纵坐标' 或者 '宽度x高度')


minisize: 窗口的最小缩放大小(为 None 时会自动改为参数 geometry 的匹配值)


alpha: 窗口透明度,范围为0~1,0为完全透明


proportion_lock: 窗口缩放是否保持原比例


shutdown: 关闭窗口之前执行的函数(会覆盖原来的关闭操作)


**kw: 与原 tkinter 模块中的 Tk 类的参数相同


是不是与原来 tkinter 模块里面的不一样呢?实际上,原 tkinter 模块里面对 Tk 类的一些操作(什么方法啊,函数啊之类的)都适用于这个新 Tk 类。


实例属性


① width: 窗口的初始宽度


② height: 窗口的初始高度


③ canvas_list: Tk 类所承载的 Canvas 类的列表


④ toplevel_list: Tk 类的所有子窗口 Toplevel 的列表

实例方法

与 tkinter 模块里面原生的 Tk 相同。

详细用法

这里就简单地给个示例吧。示例窗口略微带点透明度。Tk 详细用法

以上示例的源代码如下:

import tkintertools
from tkinter.messagebox import askyesno
shutdown = lambda:root.quit() if askyesno('提示', '确认关闭吗?') else None
root = tkintertools.Tk('tkintertools辅助模块操作说明', '540x360', alpha=0.8, shutdown=shutdown)
root.mainloop()

上面代码中,关于 tkinter 的库(子库 messagebox)和 tkintertools 都用到了,也说明了 tkinter 模块和 tkintertools 模块是兼容的。

2、Toplevel

用法类似于原 tkinter 模块里的 Toplevel,同时增加了 Tk 的功能

初始化参数说明

Toplevel(master: Tk,
         title: str | None = None,
         geometry: str | None = None,
         minisize: tuple[int, int] | None = None,
         alpha: float | None = None,
         proportion_lock: bool = False,
         shutdown=None,  # type: function | None
         **kw)

master: 父窗口,一般指 Tk (也可以是 Toplevel,即 Toplevel 的 Toplevel)


title: 窗口标题


geometry: 窗口大小及位置(格式:'宽度x高度+左上角横坐标+左上角纵坐标' 或者 '宽度x高度')


minisize: 窗口的最小缩放大小(为 None 时会自动改为参数 geometry 的匹配值)


alpha: 窗口透明度,范围为0~1,0为完全透明


proportion_lock: 窗口缩放是否保持原比例


shutdown: 关闭窗口之前执行的函数(会覆盖原来的关闭操作)


**kw: 与原 tkinter 模块中的 Toplevel 类的参数相同


其余的用法都和 Tk 类差不多啦。

实例属性

① width: 新窗口的初始宽度

② height: 新窗口的初始高度

③ canvas_list: Toplevel 类所承载的 Canvas 类的列表

④ toplevel_list: Toplevel 类的所有子窗口 Toplevel 的列表

实例方法

这个和 tkinter 原生的 Toplevel 一样啦。


目录
相关文章
|
7月前
|
机器学习/深度学习 数据可视化 PyTorch
PyTorch基础之模型保存与重载模块、可视化模块讲解(附源码)
PyTorch基础之模型保存与重载模块、可视化模块讲解(附源码)
165 1
Echarts实战案例代码(19):利用visualMap视觉映射组件制作五色玫瑰工作进程图
Echarts实战案例代码(19):利用visualMap视觉映射组件制作五色玫瑰工作进程图
241 0
《QT从基础到进阶·二十六》绘制多个图形项(QGraphicsRectItem,QGraphicsLineItem,QGraphicsPolygonItem)
《QT从基础到进阶·二十六》绘制多个图形项(QGraphicsRectItem,QGraphicsLineItem,QGraphicsPolygonItem)
247 0
|
索引 Python
Python的知识点运用-3(不太基础的基础运用,代码美化)
Python的知识点运用-3(不太基础的基础运用,代码美化)
65 0
|
前端开发 Python 容器
tkinter 模块的最强辅助模块 —— tkintertools(万字详解)(二)
tkinter 模块的最强辅助模块 —— tkintertools(万字详解)(二)
233 0
|
前端开发 Python
tkinter 模块的最强辅助模块 —— tkintertools(万字详解)(四)
tkinter 模块的最强辅助模块 —— tkintertools(万字详解)(四)
255 0
|
数据安全/隐私保护 Python
tkinter 模块的最强辅助模块 —— tkintertools(万字详解)(三)
tkinter 模块的最强辅助模块 —— tkintertools(万字详解)(三)
340 0
|
Python
Python Tkinter 教程(四)—— 子模块 messagebox、colorchooser 以及 filedialog 的使用及技巧(万字详解)(上)
Python Tkinter 教程(四)—— 子模块 messagebox、colorchooser 以及 filedialog 的使用及技巧(万字详解)(上)
277 0
|
Python
Python Tkinter 教程(四)—— 子模块 messagebox、colorchooser 以及 filedialog 的使用及技巧(万字详解)(下)
Python Tkinter 教程(四)—— 子模块 messagebox、colorchooser 以及 filedialog 的使用及技巧(万字详解)(下)
331 0