在 tkinter 中的 Canvas 有十分强大的作图功能,然而,并没有一份比较好的文档对这些作图函数进行分组,极大地限制了函数的使用。本文将这些作图函数分为如下几组:
graph = {'create_arc', 'create_line', 'create_oval', 'create_rectangle', 'create_polygon'}
image = {'create_bitmap', 'create_image'}
text = {'create_text'}
window = {'create_window'}
下面逐一介绍这些函数之间的参数的区别与联系。
1 通用参数
1.1 通用:graph + image + text + window
graph + image + text + window
共同的参数有:
选项 | 含义 |
---|---|
state |
指定该画布对象的状态。可以是 'normal' (默认值), 'disabled' (不可用,不响应事件)和 'hidden' (隐藏) |
tags |
为创建的画布对象添加标签 |
1.2 “width”:graph + text + window
graph、text 与 window 的共有参数是 "width"
,但是它们的含义有所区别:
选项 | 含义 |
---|---|
graph | 指定边框的宽度 |
text | 如果指定该选项,则文本会在该宽度处自动断行;如果不指定该选项,文本对象的宽度等于文本最长行的长度 |
window | 指定窗口组件的宽度 |
1.3 graph + text
graph 与 text 均有参数:activefill
, activestipple
, disabledfill
, disabledstipple
, offset
, stipple
。
activefill
,activestipple
分别表示当画布对象状态为'active'
的时候,填充颜色、指定填充的位图disabledfill
,disabledstipple
分别表示当画布对象状态为'disabled'
的时候,填充颜色、指定填充的位图
选项 | 含义 |
---|---|
offset |
指定当点画模式时填充位图的偏移。该选项的值可以是:"x,y" , "#x,y" , 'n' , 'ne' , 'e' , 'se' , 's' , 'sw' , 'w' , 'nw' , 'center' |
stipple |
指定一个位图用于填充。默认值是空字符串,表示实心 |
一个实例:
from tkinter import Tk, Canvas
# 创建窗口
root = Tk()
# 创建并添加Canvas
cv = Canvas(root, background='white')
cv.pack(fill='both', expand='yes')
cv.create_rectangle(30, 30, 200, 200,
outline='red', # 边框颜色
stipple = 'question', # 填充的位图
fill="red", # 填充颜色
width=5 # 边框宽度
)
cv.create_oval(240, 30, 330, 200,
outline='yellow', # 边框颜色
fill='pink', # 填充颜色
width=4 # 边框宽度
)
root.mainloop()
效果图如下:
1.4 image + text + window
选项 | 含义 |
---|---|
anchor | 指定位图在 position 参数的相对位置。'n' , 'ne' , 'e' , 'se' , 's' , 'sw' , 'w' , 'nw' 或 'center' (默认值)来定位(ewsn 代表东西南北,其中上北下南左西右东) |
1.5 graph 通用
activedash
,activewidth
,activeoutline
,activeoutlinestipple
分别表示当画布对象状态为'active'
的时候,绘制虚线、指定边框的宽度、绘制轮廓线、指定填充轮廓的位图。disableddash
,disabledwidth
,disabledoutline
,disabledoutlinestipple
分别表示当画布对象状态为'disabled'
的时候,绘制虚线、指定边框的宽度、绘制轮廓线、指定填充轮廓的位图。
选项 | 含义 |
---|---|
dash |
指定绘制虚线轮廓。该选项值是一个整数元组,元组中的元素分别代表短线的长度和间隔。例如 (3, 5) 代表 3 个像素的短线和 5 个像素的间隔 |
dashoffset |
指定虚线轮廓开始的偏移位置。例如当 dash=(5, 1, 2, 1) ,dashoffset=3 ,则从 2 开始画虚线 |
fill |
指定填充的颜色,空字符串表示透明 |
1.6 graph - {'create_line'}
选项 | 含义 |
---|---|
outline | 指定轮廓的颜色 |
1.7 {'create_polygon', create_line''}
调用:create_polygon(coords,**kw)
与 create_line(coords, **kw)
选项 | 含义 |
---|---|
joinstyle | 指定当绘制两个相邻线段之间接口的样式 。该选项的值可以是: -‘round’(以连接点为圆心,width/2 选项设置的长度为半径绘制圆角,默认值),‘bevel’(在连接点处对两线段的夹角平切), ‘miter’(沿着两线段的夹角延伸至一个点)。 |
smooth | 该选项的值为 True 时,将绘制贝塞尔样条曲线代替线段。.默认值为 False |
splinesteps | 当绘制贝塞尔样条曲线的时候,该选项指定由多少条折线来构成曲线。默认值是 12;只有当 smooth 选项为 True 时该选项才能生效 |
2 create_window(position, **kw)
在 position 指定的位置 (x,y)(x,y)(x,y) 创建一个窗口组件。创建成功后返回该窗口组件的 ID。
下方表格列举了 kw 选项的具体含义:
选项 | 含义 |
---|---|
height | 指定窗口组件的高度 |
window | 指定一个窗口组件 |
3 create_image(position, **kw)
在 position
指定的位置 (x,y)(x,y)(x,y) 创建一个图片对象。创建成功后返回该图片对象的 ID。下方表格列举了各个 kw 选项的具体含义:
选项 | 含义 |
---|---|
activeimage |
指定当图片对象状态为 'active' 时候显示的图片 |
disabledimage |
指定当图片对象状态为 'disabled' 时候显示的图片 |
image |
指定要显示的图片 |
4 create_bitmap(position, **kw)
在 position
指定的位置 (x,y)(x,y)(x,y) 创建一个位图对象。创建成功后返回该位图对象的 ID。
activebackground
, activebitmap
, activeforeground
分别指定当位图对象状态为 'active'
时候的背景颜色、填充的位图、前景颜色;disabledbackground
, disabledbitmap
, disabledforeground
分别指定当位图对象状态为 'disabled'
时候的背景颜色、填充的位图、前景颜色。
下方表格列举了各个 kw 其他选项的具体含义:
选项 | 含义 |
---|---|
background | 指定背景颜色,即在位图中值为 0 的点的颜色;空字符串表示透明 |
foreground | 指定前景颜色,即在位图中值为 1 的点的颜色 |
bitmap | 指定显示的位图 |
5 create_text(position,**kw)
在 position
指定的位置 (x,y)(x,y)(x,y) 创建一个文本对象。创建成功后返回该文本对象的 ID。
下方表格列举了各个 kw 选项的具体含义:
anchor
同 create_bitmap(position, **kw)
。
选项 | 含义 |
---|---|
fill | 指定文本的颜色 |
font | 指定文本的字体、尺寸等信息 |
justify | 指定对于多行文本的对齐方式。该选项可以使用的值有:LEFT(默认)、CENTER 和 RIGHT |
text | 指定该文本对象将要显示的文本内容 |
6 形态各异 graph
6.1 create_rectangle(bbox,**kw)
与 create_oval(bbox,**kw)
傻傻分不清
create_oval(bbox,**kw)
与 create_rectangle(bbox,**kw)
分别用于创建矩形和椭圆。新创建的画布对象位于显示列表的顶端,创建成功后返回该画布对象的 ID。
6.2 create_arc(bbox, **kw)
根据 bbox 即 (x0,y0,x1,y1)(x_0,y_0, x_1, y_1)(x0,y0,x1,y1) 创建一个扇形(‘pieslice’)、弓形(‘chord’)或弧形(‘arc’)。新创建的画布对象位于显示列表的顶端,创建成功后返回该画布对象的 ID。下方表格列举了各个 kw 选项的具体含义:
选项 | 含义 |
---|---|
extent | 指定从 start 选项指定的位置开始到结束位置的角度(默认值是 90.0 ) |
outlineoffset | 指定当点画模式绘制轮廓时位图的偏移。该选项的值可以是:"x,y" , "#x,y" , 'n' , 'ne' , 'e' , 'se' , 's' , 'sw' , 'w' , 'nw' , 'center' |
outlinestipple | 当 outline 选项被设置时,该选项用于指定一个位图来填充边框。默认值是空字符串,表示黑色 start |
style | 指定该方法创建的是扇形(‘pieslice’)(默认值)、弓形(‘chord’)或弧形(‘arc’)。 |
6.3 create_line(coords, **kw)
根据 coords
给定的坐标创建一条或多条线段。如果给定的坐标多于两个点,则会首尾相连变成一条折线,创建成功后返回该画布对象的 ID。
下方表格列举了各个 kw 选项的具体含义:
选项 | 含义 |
---|---|
arrow | 默认线段是不带箭头的,你可以通过设置该选项添加箭头到线段中。'first' 表示添加箭头到线段开始的位置;'last' 表示添加箭头到线段结束的位置;'both' 表示两端均添加箭头 |
arrowshape | 用一个三元组 (a,b,c)(a,b,c)(a,b,c) 来指定箭头的形状。a,b,ca,b,ca,b,c 分别代表箭头的三条边的长;默认值是 (8, 10, 3) |
capstyle | 指定线段两端的样式。该选项的值可以是:‘buff’( 默认值)(线段的两段平切于起点和终点)、‘projecting’(线段的两段在起点和终点的位置分别延长一半 width 选项设置的长度)与 ‘round’(线段的两段在起点和终点的位置分别延长一半 width 选项设置的长度并以圆角绘制) |