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