第18章 画布控件
画布控件,顾名思义就是创建一个空白的画布,可以在上面画图或者添加其它控件。
画布控件支持如下图形:
圆弧(arc ,包括圆弧、弦、扇形)
位图(bitmap )
图像(image )
直线(line)(绘制直线,箭头)
圆系列(oval )(绘制圆或者椭圆)
多边形(polygon)(绘制多边形)
矩形(rectangle)(绘制矩形)
文本(text)(绘制文本)
窗口(window)(绘制窗口)
18.1 属性
属性 | 描述 |
---|---|
background bg |
画布控件的背景颜色 |
borderwidth bd |
画布控件的边框宽度。默认是1-2个像素。 |
closeenough | 指定一个数值,当鼠标与画布对象的距离小于该值时,鼠标被认为在画布对象上。该选项是一个浮点类型的值,默认值是1.0 |
confine | 指定画布组件是否允许滚动超出 scrollregion 选项指定的范围,为True的时候不允许。默认值是 True |
height | 画布控件的高度 |
highlightbackground | 没有输入焦点时的高亮边框背景颜色 |
highlightcolor | 获得输入焦点时的高亮边框背景颜色 |
highlightthickness | 高亮边框的宽度 |
relief | 画布控件的3D效果。 默认值是 FLAT,其他可选值是 SUNKEN,RAISED,GROOVE 和 RIDGE |
scrollregion | 由元组(x1,y1,x2,y2)定义的一个四元组。该四元组与Canvas的宽w与高h,以及画布上所有控件最小的x坐标与最大的y坐标一同计算的区域。具体的公式为: XL=x1-x YT=y1-y XR=w-x2+x YB=h-y2+y 如果Canvas在窗口中的左上角坐标不是(0,0),还需要加上Canvas的左上角坐标 |
selectbackground | 选中画布中的元素时,相应的背景色 |
selectborderwidth | 选中画布中的元素时,边框的宽度 |
selectforeground | 选中画布中的元素时,相应的前景色 |
state | 设置画布的状态:NORMAL 或 DISABLED,默认值是 NORMAL。 |
takefocus | 定义是否可以通过Tab键获得输入焦点 |
width | 定义画布控件的宽度 |
xscrollincrement | 该选项指定画布水平滚动的“步长”,例如 ‘3c’ 表示 3 厘米,还可以选择的单位有 ‘i’(英寸),‘m’(毫米)和 ‘p’(DPI,大约是 ‘1i’ 等于 ‘72p’)。 默认值是 0,表示可以水平滚动到任意位置 |
xscrollcommand | 设置控制水平滚动的回调函数 |
yscrollincrement | 类似于xscrollincrement 参数,不过是控制垂直滚动的粒度 |
yscrollcommand | 设置控制垂直滚动的回调函数 |
18.1.1 background(bg) | |
定义画布控件的背景颜色。 |
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root,bg='blue')
b1.pack()
root.mainloop()
结果:
18.1.2 borderwidth(bd)
定义画布控件边框的宽度。需要和relief选项一起,才有作用。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root,bg='blue',
bd=10,relief='groove')
b1.pack()
root.mainloop()
结果:
18.1.3 closeenough
定义鼠标距离画布控件中的元素多近就会被认为是位于该元素之内或者之上。是一个浮点数。默认值是1.0。
18.1.4 confine
指定画布组件是否允许滚动超出 scrollregion 选项指定的范围。
18.1.5 cursor
设定鼠标在画布控件之内的形状。
18.1.6 height
设定画布控件的高度。默认单位是像素。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root,bg='blue',
width=200,height=200,
bd=10,relief='groove')
b1.pack()
root.mainloop()
结果:
18.1.7 highlightbackground、highlightcolor和highlightthickness
设置有输入焦点、无输入焦点的边框背景颜色。需要设置takefocus=True。因为默认情况下,画布控件不能通过Tab获得输入焦点。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root,bg='green',
width=200,height=200,
highlightbackground='blue',
highlightcolor='red',
highlightthickness=10,
takefocus=1)
b1.pack()
root.mainloop()
结果:
18.1.8 relief
画布控件的3D效果,见第3.3.5节说明。
18.1.9 scrollregion
由元组(x1,y1,x2,y2)定义的一个四元组。该四元组与Canvas的宽w与高h,以及画布上所有控件最小的x坐标与最大的y坐标一同计算的区域。具体的公式为:
XL=x1-x
YT=y1-y
XR=w-x2+x
YB=h-y2+y
如果Canvas在窗口中的左上角坐标不是(0,0),还需要加上Canvas的左上角坐标
18.1.10 takefocus
定义是否可以通过Tab键让画布控件获得输入焦点。
18.1.11 width
定义画布控件的宽度(x方向上)。默认单位像素。
18.1.12 xscrollincrement
定义画布控件水平滚动的粒度。如果是0,表示可以滚动到任意的位置。如果是一个正数,只能滚动到该数值整数倍的位置上。
18.1.13 xscrollcommand
控制水平滚动的回调函数。一般是设置为控件的 .set()方法。参见前面其他章节关于水平滚动条的说明。
18.1.14 yscrollincrement
定义画布控件垂直滚动的粒度。参见xscrollincrement。
18.1.15 yscrollcommand
控制垂直滚动的回调函数。一般是设置为控件的 .set()方法。参见前面其他章节关于垂直滚动条的说明。