2、CanvasButton
创建一个虚拟的按钮,并执行关联函数
初始化参数
CanvasButton(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, command=None, # type: function | None 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 默认外观
详细用法
按钮的操作就比较多了,不仅外观可以改变,也可以像原版的 tkinter 一样执行关联函数(command 参数写法一样)。
CanvasButton 详细用法
实现上面效果的源代码:
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) test = canvas.create_rectangle(200, 200, 250, 250, fill='black', width=0) callback = lambda: canvas.itemconfigure(test, fill='red' if canvas.itemcget(test, 'fill') == 'black' else 'black') tkintertools.CanvasButton(canvas, 100, 100, 150, 30, 0, '按钮', command=callback, color_text=('grey', 'black', 'black'), color_fill=('', 'yellow', 'orange'), color_outline=('grey', 'yellow', 'orange')) root.mainloop()
3、CanvasEntry
创建一个虚拟的输入框控件,可输入单行少量字符,并获取这些字符
初始化参数
CanvasEntry(canvas: Canvas, x: int, y: int, width: int, height: int, radius: int = RADIUS, text: tuple[str] | str = NULL, show: str | None = None, limit: int = LIMIT, space: bool = False, cursor: str = CURSOR, borderwidth: int = BORDERWIDTH, justify: str = tkinter.LEFT, font: tuple[str, int, str] = FONT, color_text: tuple[str, str, str] = COLOR_TEXT, color_fill: tuple[str, str, str] = COLOR_FILL_TEXT, color_outline: tuple[str, str, str] = COLOR_OUTLINE_TEXT)
实例方法
① get
get()
获取输入框的输入的值,无参数
② set
set(value: str)
设置输入框的值
value: 要修改的值
③ append
append(value: str)
给输入框添加值
value: 添加的值,用法类比与列表的 append 方法
默认外观
CanvasEntry 默认外观
详细用法
这个输入框,功能还算比较完整,可以输入一些允许的文本,有默认值,提示值,以及特殊的显示(如密码显示为黑圆点),可以限制文本输入长度,等等……
但是还有一些功能没有做到,如选中一些输入的文本、快捷键全选(Ctrl+A)、复制等等(粘贴还是做到了),这些我会努力去实现的。
【关于输入框一些属性】
read: 输入框的只读模式的标识
space: 输入框是否能输入空格的标识
icursor: 输入框文本输入提示符的字符
value_surface: 表面的值,一般和 value 一样,但 show 属性有值的时候为若干个 show 的值
value_normal: 一般显示文本,即鼠标未在输入框上面时显示文本
value_touch: 鼠标触碰到的值,即鼠标放在输入框上面但未点下去时显示的文本
show: 输入文本后对外显示的值,与原 tkinter 里 Entry 的 show 参数一样的效果
limit: 文本长度的限制(一般字符长度算 1,中文字符长度算 2 个),为负数时表示无限制
下面就展示一个用法的实例:
CanvasEntry 详细用法
实现上面效果的源代码:
import tkintertools root = tkintertools.Tk('tkinter辅助模块操作说明', '960x540') 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.CanvasEntry( canvas, 380, 370, 200, 25, 0, ('账号', '点击输入'), color_fill=tkintertools.COLOR_NONE, # 内部始终透明 color_text=('white', 'white', 'white'), color_outline=('white', 'springgreen', 'springgreen')) tkintertools.CanvasEntry( canvas, 380, 400, 200, 25, 0, ('密码', '点击输入'), '•', color_fill=tkintertools.COLOR_NONE, # 内部始终透明 color_text=('white', 'white', 'white'), color_outline=('white', 'springgreen', 'springgreen')) root.mainloop()
4、CanvasText
创建一个透明的虚拟文本框,用于输入多行文本和显示多行文本(只读模式)
初始化参数
CanvasText(canvas: Canvas, x: int, y: int, width: int, height: int, radius: int = RADIUS, text: tuple[str] | str = NULL, limit: int = LIMIT, space: bool = True, read: bool = False, cursor: bool = CURSOR, borderwidth: int = BORDERWIDTH, justify: str = tkinter.LEFT, font: tuple[str, int, str] = FONT, color_text: tuple[str, str, str] = COLOR_TEXT, color_fill: tuple[str, str, str] = COLOR_FILL_TEXT, color_outline: tuple[str, str, str] = COLOR_OUTLINE_TEXT)
实例方法
① get
get()
获取文本框中的值,没有参数
② set
set(value: str)
重新设定显示文字
value: 要修改的值
③ append
append(value: str)
给文本框添加一些文本
value: 要添加的文本,用法类比于列表的 append 方法
默认外观
anvasText 默认外观
详细用法
这个文本框呢,功能描述和上面的输入框(CanvasEntry)差不多的,但是还是有一些不同。
比如,文本框里面默认是可以输入空格符号的,而输入框默认不行(可通过 space 参数修改)。
其次,如果这个文本框的 limit 参数设置的比较大,且 read 参数为 True 时,那在超过了文本框显示的范围之后,它会只显示一部分……还有很多特性。
【关于文本框一些属性】
read: 输入框的只读模式的标识
space: 输入框是否能输入空格的标识
icursor: 输入框文本输入提示符的字符
value_surface: 表面的值,一般和 value 一样,但文本过多时,两者不一样
value_normal: 一般显示文本,即鼠标未在输入框上面时显示文本
value_touch: 鼠标触碰到的值,即鼠标放在输入框上面但未点下去时显示的文本
limit: 文本长度的限制(一般字符长度算 1,中文字符长度算 2 个),为负数时表示无限制
下面展示一个实例:(更好的实例可以去后面的“实战效果展示”中查看)
CanvasText 详细用法
实例的源代码:
import tkintertools root = tkintertools.Tk('tkinter辅助模块操作说明', '960x540') 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.CanvasText(canvas, 100, 100, 300, 150, 0, color_text=('grey', 'white', 'white'), color_fill=tkintertools.COLOR_NONE, color_outline=('grey', 'white', 'white')) root.mainloop()