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

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

3、Canvas

用于承载虚拟的画布控件

初始化参数说明

Canvas(master,  # type: Tk
       width: int,
       height: int,
       lock: bool = True,
       expand: bool = True,
       **kw)

master: 父控件(一般为 Tk 类,但其他容器控件也可)


width: 画布宽度


height: 画布高度


lock: 画布内控件的功能锁(False 时没有功能)


expand: 画布及其控件是否能缩放


**kw: 与原 tkinter 模块内 Canvas 类的参数相同


原来 tkinter 模块里面的 Canvas 类的一些方法仍然适用于该新的 Canvas 类,像什么绘制图形的,都可以。


实例属性


① master: 父容器控件(只能是 tkintertools 的 Tk,不是 tkinter 模块的 Tk)


② widget_list: Canvas 类所承载的所有虚拟画布控件的列表


③ lock: Canvas 的锁,为 False 时其承载的控件的功能全部失效(但没有删除)


④ width: 画布的初始宽度,不会改变


⑤ height: 画布的初始高度,不会改变


⑥ expand: 画布缩放的标识


⑦ rate_x: 横向缩放倍率,初始为 1


⑧ rate_y: 纵向缩放倍率,初始为 1

实例方法

① setlock

setlock(boolean: bool)

设置 Canvas 的 lock 属性,并更新刚刚设为 True 的 Canvas 的大小以适应缩放状态

其余的实例方法均与 tkinter 模块里面原生的 Canvas 相同。

三、虚拟画布控件类

总体参数说明

下面是参数说明是适用于所有的虚拟画布控件类的

标准参数

canvas: 父画布容器控件


x: 控件左上角的横坐标


y: 控件左上角的纵坐标


width, height: 控件的宽度与高度


radius: 控件的四个角圆角化的半径


text: 控件显示的文本,对于文本控件而言,可以为一个元组:(默认文本, 鼠标触碰文本)


justify: 文本的对齐方式


borderwidth: 外框的宽度


font: 控件的字体设定 (字体, 大小, 样式)


color_text: 控件文本的颜色


color_fill: 控件内部的颜色


color_outline: 控件外框的颜色


特定参数

command: 按钮控件的关联函数


show: 文本控件的显示文本


limit: 文本控件的输入字数限制,为负数时表示没有字数限制


space: 文本控件能否输入空格的标识


read: 文本控件的只读模式


cursor: 文本输入提示符的字符,默认为一竖线

详细说明


1、字体的值为一个包含两个值或三个值的元组,共两种形式


形式一:(字体名称, 字体大小)


形式二:(字体名称, 字体大小, 字体样式)


例如: ('微软雅黑', 15, 'bold')


2、颜色为一个包含三个或四个 RGB 颜色字符串或颜色单词的元组


不使用禁用功能时: (正常颜色, 触碰颜色, 交互颜色)


需使用禁用功能时: (正常颜色, 触碰颜色, 交互颜色, 禁用颜色)


例如:('#F1F1F1', '#666666', 'springgreen', 'grey')


颜色设置为空字符代表透明!


3、当圆角化半径过大时,会自动取允许的最大值

总体实例属性说明

下面是所有的画布虚拟控件都有的实例属性。


① master: 父容器控件(只能是 Canvas)


② live: 控件活跃的标识(可单独设置以对单个的控件进行控制,False 时控件功能失效)


③ text: 控件的文本,实际类型为 tkinter._CanvasItemId


④ radius: 圆角化半径


⑤ font: 控件字体


⑥ justify: 控件文本对齐方式


⑦ width、height: 控件宽度与高度


⑧ color_text: 控件文本颜色


⑨ color_fill: 控件内部颜色


⑩ color_outline: 控件外框颜色


总体实例方法

下面是所有的画布虚拟控件都有的实例方法。

① state

state(mode: Literal['normal', 'touch', 'press', 'disabled'] | None)

改变控件的状态


mode: 状态的模式,可选 normal、touch、press、disabled 四种模式,或 None(默认值)


       normal: 一般状态,外观为颜色元组的第一个元素


       touch: 触碰状态,外观为颜色元组的第二个元素


       press: 按下状态,外观为颜色元组的第三个元素


       disabled: 禁用状态,外观为颜色元组的第四个元素


为 None 时表示更新控件的外观状态(强行修改外观后我们需要这个功能进行更新)

② move

move(dx: float, dy: float)

移动控件的位置(瞬移)

① dx: 横向移动距离(单位:像素)

② dy: 纵向移动距离

③ configure

configure(*args, **kw)

修改或查询部分参数的初始值


可供修改的参数有 text、color_text、color_fill 及 color_outline


       text: 显示的文本


       color_text: 控件文本的颜色


       color_fill: 控件内部的颜色


       color_outline: 控件外框的颜色


若只是以字符串的形式输入参数,则会返回名为该输入字符串的参数的值

【代码示例】

1. button = CanvasButton(...)
2. button.configure(text='新文本')

④ destroy

destroy()

没有参数,执行后将删除控件,控件将不复存在,释放内存

⑤ set_live

set_live(boolean: bool | None = None)

修改或查询控件的 live 参数

boolean: 为 bool 类型的值时,设置控件的 live 属性为 boolean,为 None (默认值)时,返回控件当前的 live 值

当 live 属性为 False 时,控件将处于禁用状态

1、CanvasLabel

创建一个虚拟的标签控件,用于显示少量文本

初始化参数

CanvasLabel(canvas: Canvas,
            x: int,
            y: int,
            width: int,
            height: int,
            radius: int = RADIUS,
            text: str = NULL,
            borderwidth: int = BORDERWIDTH,
            justify: str = tkinter.CENTER,
            font: tuple[str, int, str] = FONT,
            color_text: tuple[str, str, str] = COLOR_TEXT,
            color_fill: tuple[str, str, str] = COLOR_FILL_BUTTON,
            color_outline: tuple[str, str, str] = COLOR_OUTLINE_BUTTON)

默认外观

CanvasLabel 默认外观

详细用法

当然了,我们也可以给 CanvasLabel 加一些参数,使其外观符合我们的需求。

CanvasLabel 详细用法

该效果的源代码:

import tkintertools
root = tkintertools.Tk('tkinter辅助模块操作说明', '960x540', (960, 540))
canvas = tkintertools.Canvas(root, 960, 540)
canvas.place(x=0, y=0)
background = tkintertools.PhotoImage('background.png')
canvas.create_image(480, 270, image=background)
tkintertools.CanvasLabel(canvas, 100, 100, 300, 200, 0, '这是一个\n虚拟画布标签控件',
                         font=('华文行楷', 20),
                         color_fill=tkintertools.COLOR_NONE,  # 内部透明
                         color_outline=('grey', 'springgreen', ''))
"""
CanvasLabel的颜色参数元组的最后一个元素实际没有意义
最后一个是控件被点击时的外观
然鹅,CanvasLabel是没有点击事件的
"""
root.mainloop()
目录
打赏
0
0
0
0
7
分享
相关文章
PyTorch基础之模型保存与重载模块、可视化模块讲解(附源码)
PyTorch基础之模型保存与重载模块、可视化模块讲解(附源码)
177 1
Echarts实战案例代码(19):利用visualMap视觉映射组件制作五色玫瑰工作进程图
Echarts实战案例代码(19):利用visualMap视觉映射组件制作五色玫瑰工作进程图
256 0
c++primer plus 6 读书笔记 第七章 函数--C++的编程模块
c++primer plus 6 读书笔记 第七章 函数--C++的编程模块
tkinter 模块的最强辅助模块 —— tkintertools(万字详解)(四)
tkinter 模块的最强辅助模块 —— tkintertools(万字详解)(四)
265 0
tkinter 模块的最强辅助模块 —— tkintertools(万字详解)(三)
tkinter 模块的最强辅助模块 —— tkintertools(万字详解)(三)
354 0
tkinter 模块的最强辅助模块 —— tkintertools(万字详解)(一)
tkinter 模块的最强辅助模块 —— tkintertools(万字详解)(一)
220 0
Python Tkinter 教程(四)—— 子模块 messagebox、colorchooser 以及 filedialog 的使用及技巧(万字详解)(下)
Python Tkinter 教程(四)—— 子模块 messagebox、colorchooser 以及 filedialog 的使用及技巧(万字详解)(下)
342 0
Python Tkinter 教程(四)—— 子模块 messagebox、colorchooser 以及 filedialog 的使用及技巧(万字详解)(上)
Python Tkinter 教程(四)—— 子模块 messagebox、colorchooser 以及 filedialog 的使用及技巧(万字详解)(上)
284 0
[oeasy]python0141_自制模块_module_reusability_复用性
[oeasy]python0141_自制模块_module_reusability_复用性
89 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等