Canvas
画布控件
画布控件;显示图形元素如线条或文本
Python Tkinter 画布(Canvas)组件和 html5 中的画布一样,都是用来绘图的。您可以将图形,文本,小部件或框架放置在画布上。
语法
语法格式如下:
w = Canvas(master, option=value, ...)
- master: 按钮的父容器。
- options: 可选项,即该按钮的可设置的属性。这些选项可以用键 = 值的形式设置,并以逗号分隔。
可选项 | 描述 |
---|---|
bd | 边框宽度,单位像素,默认为 2 像素。 |
bg | 背景色 |
confine | 如果为 true (默认), 画布不能滚动到可滑动的区域外。 |
cursor | 光标的形状设定,如arrow, circle, cross, plus 等 |
height | 高度 |
highlightcolor | 要高亮的颜色 |
relief | 边框样式,可选值为 FLAT、SUNKEN、RAISED、GROOVE、RIDGE。 默认为 FLAT。 |
scrollregion | 一个元组 tuple (w, n, e, s) ,定义了画布可滚动的最大区域,w 为左边,n 为头部,e 为右边,s 为底部。 |
width | 画布在 X 坐标轴上的大小。 |
xscrollincrement | 用于滚动请求水平滚动的数量值。 |
xscrollcommand | 水平滚动条,如果画布是可滚动的,则该属性是水平滚动条的 .set()方法。 |
yscrollincrement | 类似 xscrollincrement, 但是垂直方向。 |
yscrollcommand | 垂直滚动条,如果画布是可滚动的,则该属性是垂直滚动条的 .set()方法。 |
-
Canvas 组件支持以下标准选项:
-
Canvas 组件支持对象
arc
(弧形、弦或扇形)bitmap
(内建的位图文件或 XBM 格式的文件)mage
(BitmapImage 或PhotoImage 的实例对象)line
(线)oval
(圆或椭圆形)polygon
(多边形)rectangle
(矩形)text
(文本)window
(组件)
其中,弦、扇形、椭圆形、圆形、多边形和矩形这些“封闭式”图形都是由轮廓线和填充颜色组成的,但都可以设置为透明(传入空字符串表示透明)。
from tkinter import Canvas, PhotoImage
# arc创建一个扇形
coord = 10, 50, 240, 210
arc = Canvas.create_arc(coord, start=0, extent=150, fill="blue")
# image − 创建图像
filename = PhotoImage(file = "sunshine.gif")
image = Canvas.create_image(50, 50, anchor=NE, image=filename)
# line − 创建线条
line = Canvas.create_line(x0, y0, x1, y1, ..., xn, yn, options)
# oval − 创建一个圆
oval = Canvas.create_oval(x0, y0, x1, y1, options)
# polygon − 创建一个至少有三个顶点的多边形
oval = Canvas.create_polygon(x0, y0, x1, y1,...xn, yn, options)
方法
create_arc(bbox, **options)
根据 bbox (x1, y1, x2, y2) 创建一个扇形(PIESLICE)、弓形(CHORD)或弧形(ARC)
新创建的画布对象位于显示列表的顶端
创建成功后返回该画布对象的 ID
下方表格列举了各个 options 选项的具体含义:
-
activedash
当画布对象状态为 ACTIVE 的时候,绘制虚线 -
activefill
当画布对象状态为 ACTIVE 的时候,填充颜色 -
activeoutline
当画布对象状态为 ACTIVE 的时候,绘制轮廓线 -
activeoutlinestipple
当画布对象状态为 ACTIVE 的时候,指定填充轮廓的位图 -
activestipple
当画布对象状态为 ACTIVE 的时候,指定填充的位图 -
activewidth
当画布对象状态为 ACTIVE 的时候,指定边框的宽度 -
dash
- 指定绘制虚线轮廓
- 该选项值是一个整数元组,元组中的元素分别代表短线的长度和间隔
- 例如 (3, 5) 代表 3 个像素的短线和 5 个像素的间隔
-
dashoffset
- 指定虚线轮廓开始的偏移位置
- 例如当 dash=(5, 1, 2, 1),dashoffset=3,则从 2 开始画虚线
-
disableddash
当画布对象状态为 DISABLE 的时候,绘制虚线 -
disabledfill
当画布对象状态为 DISABLE 的时候,填充颜色 -
disabledoutline
当画布对象状态为 DISABLE 的时候,绘制轮廓线 -
disabledoutlinestipple
当画布对象状态为 DISABLE 的时候,指定填充轮廓的位图 -
disabledstipple
当画布对象状态为 DISABLE 的时候,指定填充的位图 -
disabledwidth
当画布对象状态为 DISABLE 的时候,指定边框的宽度 -
extent
- 指定跨度(从 start 选项指定的位置开始到结束位置的角度)
- 默认值是 90.0
-
fill
- 指定填充的颜色
- 空字符串表示透明
-
offset
- 指定当点画模式时填充位图的偏移
- 该选项的值可以是:“x,y”, “#x,y”, N, NE, E, SE, S, SW, W, NW, CENTER
-
outline
指定轮廓的颜色 -
outlineoffset
- 指定当点画模式绘制轮廓时位图的偏移
- 该选项的值可以是:“x,y”, “#x,y”, N, NE, E, SE, S, SW, W, NW, CENTER
-
outlinestipple
- 当 outline 选项被设置时,该选项用于指定一个位图来填充边框
- 默认值是空字符串,表示黑色
-
start
指定起始位置的偏移角度 -
state
- 指定该画布对象的状态
- 可以是 NORMAL,DISABLED(不可用,不响应事件)和 HIDDEN(隐藏)
- 默认值是 NORMAL
-
stipple
- 指定一个位图用于填充
- 默认值是空字符串,表示实心
-
style
- 指定该方法创建的是扇形(PIESLICE)、弓形(CHORD)还是弧形(ARC)
- 默认创建的是扇形
-
tags
为创建的画布对象添加标签 -
width
指定边框的宽度
create_image(position, **options)
在 position 指定的位置(x, y)创建一个图片对象,创建成功后返回该图片对象的 ID,下方表格列举了各个 options 选项的具体含义:
-
activeimage
指定当图片对象状态为 ACTIVE 时候显示的图片 -
anchor
- 指定位图在 position 参数的相对位置
- N, NE, E, SE, S, SW, W, NW, 或 CENTER 来定位(EWSN代表东西南北,上北下南左西右东)
- 默认值是 CENTER
-
image
指定要显示的图片 -
disabledimage
指定当图片对象状态为 DISABLED 时候显示的图片 -
state
- 指定该图片对象的状态
- 可以是 NORMAL,DISABLED(不可用,不响应事件)和 HIDDEN(隐藏)
- 默认值是 NORMAL
-
tags
为创建的图片对象添加标签
create_line(coords, **options)
根据 coords 给定的坐标创建一条或多条线段,如果给定的坐标多余两个点,则会首尾相连变成一条折线,创建成功后返回该画布对象的 ID
-
activedash
当画布对象状态为 ACTIVE 的时候,绘制虚线 -
activefill
当画布对象状态为 ACTIVE 的时候,填充颜色 -
activestipple
当画布对象状态为 ACTIVE 的时候,指定填充的位图 -
activewidth
当画布对象状态为 ACTIVE 的时候,指定边框的宽度 -
arrow
- 默认线段是不带箭头的
- 你可以通过设置该选项添加箭头到线段中
- FIRST 表示添加箭头到线段开始的位置
- LAST 表示添加箭头到线段结束的位置
- BOTH 表示两端均添加箭头
-
arrowshape
- 用一个三元组 (a, b, c) 来指定箭头的形状
- a, b, c 分别代表箭头的三条边的长
- 默认值是 (8, 10, 3)
-
capstyle
- 指定线段两端的样式
- 该选项的值可以是:
- BUTT(线段的两段平切于起点和终点)
- PROJECTING(线段的两段在起点和终点的位置分别延长一半 width 选项设置的长度)
- ROUND(线段的两段在起点和终点的位置分别延长一半 width 选项设置的长度并以圆角绘制)
- 默认值是 BUTT
- 如果还不理解请看小甲鱼下方图解你就秒懂了~
-
dash
- 绘制虚线
- 该选项值是一个整数元组,元组中的元素分别代表短线的长度和间隔
- 例如 (3, 5) 代表 3 个像素的短线和 5 个像素的间隔
-
dashoffset
指定虚线开始的偏移位置,例如当 dash=(5, 1, 2, 1),dashoffset=3,则从 2 开始画虚线 -
disableddash
当画布对象状态为 DISABLE 的时候,绘制虚线 -
disabledfill
当画布对象状态为 DISABLE 的时候,填充颜色 -
disabledstipple
当画布对象状态为 DISABLE 的时候,指定填充的位图 -
disabledwidth
当画布对象状态为 DISABLE 的时候,指定边框的宽度 -
fill
指定填充的颜色,空字符串表示透明 -
joinstyle
- 指定当绘制两个相邻线段之间接口的样式
- 该选项的值可以是:
ROUND
(以连接点为圆心,1/2 width 选项设置的长度为半径绘制圆角)BEVEL
(在连接点处对两线段的夹角平切)MITER
(沿着两线段的夹角延伸至一个点)
- 默认值是 ROUND
- 如果还不理解请看上方 create_line() 函数 joinstyle 选项的图解你就秒懂了~
-
offset
指定当点画模式时填充位图的偏移,该选项的值可以是:“x,y”, “#x,y”, N, NE, E, SE, S, SW, W, NW, CENTER -
smooth
该选项的值为 True 时,将绘制贝塞尔样条曲线代替线段(资料:戳我),默认值为 False -
splinesteps
- 当绘制贝塞尔样条曲线的时候,该选项指定由多少条折线来构成曲线
- 默认值是 12
- 只有当 smooth 选项为 True 时该选项才能生效
-
state
- 指定该画布对象的状态
- 可以是 NORMAL,DISABLED(不可用,不响应事件)和 HIDDEN(隐藏)
- 默认值是 NORMAL
-
stipple
- 指定一个位图用于填充
- 默认值是空字符串,表示实心
-
tags
为创建的画布对象添加标签 -
width
指定边框的宽度
create_oval(bbox,**options)
根据限定矩形 bbox 绘制一个椭圆,新创建的画布对象位于显示列表的顶端,创建成功后返回该画布对象的 ID
-
activedash
当画布对象状态为 ACTIVE 的时候,绘制虚线 -
activefill
当画布对象状态为 ACTIVE 的时候,填充颜色 -
activeoutline
当画布对象状态为 ACTIVE 的时候,绘制轮廓线 -
activeoutlinestipple
当画布对象状态为 ACTIVE 的时候,指定填充轮廓的位图 -
activestipple
当画布对象状态为 ACTIVE 的时候,指定填充的位图 -
activewidth
当画布对象状态为 ACTIVE 的时候,指定边框的宽度 -
dash
- 指定绘制虚线轮廓
- 该选项值是一个整数元组,元组中的元素分别代表短线的长度和间隔
- 例如 (3, 5) 代表 3 个像素的短线和 5 个像素的间隔
-
dashoffset
- 指定虚线轮廓开始的偏移位置
- 例如当 dash=(5, 1, 2, 1),dashoffset=3,则从 2 开始画虚线
-
disableddash
当画布对象状态为 DISABLE 的时候,绘制虚线 -
disabledfill
当画布对象状态为 DISABLE 的时候,填充颜色 -
disabledoutline
当画布对象状态为 DISABLE 的时候,绘制轮廓线 -
disabledoutlinestipple
当画布对象状态为 DISABLE 的时候,指定填充轮廓的位图 -
disabledstipple
当画布对象状态为 DISABLE 的时候,指定填充的位图 -
disabledwidth
当画布对象状态为 DISABLE 的时候,指定边框的宽度 -
fill
- 指定填充的颜色
- 空字符串表示透明
-
offset
- 指定当点画模式时填充位图的偏移
- 该选项的值可以是:“x,y”, “#x,y”, N, NE, E, SE, S, SW, W, NW, CENTER
-
outline
指定轮廓的颜色 -
outlineoffset
- 指定当点画模式绘制轮廓时位图的偏移
- 该选项的值可以是:“x,y”, “#x,y”, N, NE, E, SE, S, SW, W, NW, CENTER
-
outlinestipple
- 当 outline 选项被设置时,该选项用于指定一个位图来填充边框
- 默认值是空字符串,表示黑色
-
state
- 指定该画布对象的状态
- 可以是 NORMAL,DISABLED(不可用,不响应事件)和 HIDDEN(隐藏)
- 默认值是 NORMAL
-
stipple
- 指定一个位图用于填充
- 默认值是空字符串,表示实心
-
tags
为创建的画布对象添加标签 -
width
指定边框的宽度
create_polygon(coords,**options)
根据 coords 给定的坐标绘制一个多边形,新创建的画布对象位于显示列表的顶端,创建成功后返回该画布对象的 ID,下方表格列举了各个 options 选项的具体含义:
-
activedash
当画布对象状态为 ACTIVE 的时候,绘制虚线 -
activefill
当画布对象状态为 ACTIVE 的时候,填充颜色 -
activeoutline
当画布对象状态为 ACTIVE 的时候,绘制轮廓线 -
activeoutlinestipple
当画布对象状态为 ACTIVE 的时候,指定填充轮廓的位图 -
activestipple
当画布对象状态为 ACTIVE 的时候,指定填充的位图 -
activewidth
当画布对象状态为 ACTIVE 的时候,指定边框的宽度 -
dash
- 指定绘制虚线轮廓
- 该选项值是一个整数元组,元组中的元素分别代表短线的长度和间隔
- 例如 (3, 5) 代表 3 个像素的短线和 5 个像素的间隔
-
dashoffset
- 指定虚线轮廓开始的偏移位置
- 例如当 dash=(5, 1, 2, 1),dashoffset=3,则从 2 开始画虚线
-
disableddash
当画布对象状态为 DISABLE 的时候,绘制虚线 -
disabledfill
当画布对象状态为 DISABLE 的时候,填充颜色 -
disabledoutline
当画布对象状态为 DISABLE 的时候,绘制轮廓线 -
disabledoutlinestipple
当画布对象状态为 DISABLE 的时候,指定填充轮廓的位图 -
disabledstipple
当画布对象状态为 DISABLE 的时候,指定填充的位图 -
disabledwidth
当画布对象状态为 DISABLE 的时候,指定边框的宽度 -
fill
- 指定填充的颜色
- 空字符串表示透明
-
joinstyle
- 指定当绘制两个相邻线段之间接口的样式
- 该选项的值可以是:
ROUND
(以连接点为圆心,1/2 width 选项设置的长度为半径绘制圆角)BEVEL
(在连接点处对两线段的夹角平切)MITER
(沿着两线段的夹角延伸至一个点)
- 默认值是
ROUND
- 如果还不理解请看小甲鱼下方图解你就秒懂了~
-
offset
- 指定当点画模式时填充位图的偏移
- 该选项的值可以是:“x,y”, “#x,y”, N, NE, E, SE, S, SW, W, NW, CENTER
-
outline
指定轮廓的颜色 -
outlineoffset
- 指定当点画模式绘制轮廓时位图的偏移
- 该选项的值可以是:“x,y”, “#x,y”, N, NE, E, SE, S, SW, W, NW, CENTER
-
outlinestipple
- 当 outline 选项被设置时,该选项用于指定一个位图来填充边框
- 默认值是空字符串,表示黑色
-
smooth
- 该选项的值为 True 时,将绘制贝塞尔样条曲线代替线段(资料:戳我)
- 默认值为 False
-
splinesteps
- 当绘制贝塞尔样条曲线的时候,该选项指定由多少条折线来构成曲线
- 默认值是 12
- 只有当 smooth 选项为 True 时该选项才能生效
-
state
- 指定该画布对象的状态
- 可以是 NORMAL,DISABLED(不可用,不响应事件)和 HIDDEN(隐藏)
- 默认值是 NORMAL
-
stipple
- 指定一个位图用于填充
- 默认值是空字符串,表示实心
-
tags
为创建的画布对象添加标签 -
width
指定边框的宽度
create_rectangle(bbox, **options)
根据限定矩形 bbox 绘制一个矩形,新创建的画布对象位于显示列表的顶端,创建成功后返回该画布对象的 ID,下方表格列举了各个 options 选项的具体含义:
-
activedash
当画布对象状态为 ACTIVE 的时候,绘制虚线 -
activefill
当画布对象状态为 ACTIVE 的时候,填充颜色 -
activeoutline
当画布对象状态为 ACTIVE 的时候,绘制轮廓线 -
activeoutlinestipple
当画布对象状态为 ACTIVE 的时候,指定填充轮廓的位图 -
activestipple
当画布对象状态为 ACTIVE 的时候,指定填充的位图 -
activewidth
当画布对象状态为 ACTIVE 的时候,指定边框的宽度 -
dash
- 指定绘制虚线轮廓
- 该选项值是一个整数元组,元组中的元素分别代表短线的长度和间隔
- 例如 (3, 5) 代表 3 个像素的短线和 5 个像素的间隔
-
dashoffset
- 指定虚线轮廓开始的偏移位置
- 例如当 dash=(5, 1, 2, 1),dashoffset=3,则从 2 开始画虚线
-
disableddash
当画布对象状态为 DISABLE 的时候,绘制虚线 -
disabledfill
当画布对象状态为 DISABLE 的时候,填充颜色 -
disabledoutline
当画布对象状态为 DISABLE 的时候,绘制轮廓线 -
disabledoutlinestipple
当画布对象状态为 DISABLE 的时候,指定填充轮廓的位图 -
disabledstipple
当画布对象状态为 DISABLE 的时候,指定填充的位图 -
disabledwidth
当画布对象状态为 DISABLE 的时候,指定边框的宽度 -
fill
- 指定填充的颜色
- 空字符串表示透明
-
offset
- 指定当点画模式时填充位图的偏移
- 该选项的值可以是:“x,y”, “#x,y”, N, NE, E, SE, S, SW, W, NW, CENTER
-
outline
指定轮廓的颜色 -
outlineoffset
- 指定当点画模式绘制轮廓时位图的偏移
- 该选项的值可以是:“x,y”, “#x,y”, N, NE, E, SE, S, SW, W, NW, CENTER
-
outlinestipple
- 当 outline 选项被设置时,该选项用于指定一个位图来填充边框
- 默认值是空字符串,表示黑色
-
state
- 指定该画布对象的状态
- 可以是 NORMAL,DISABLED(不可用,不响应事件)和 HIDDEN(隐藏)
- 默认值是 NORMAL
-
stipple
- 指定一个位图用于填充
- 默认值是空字符串,表示实心
-
tags
为创建的画布对象添加标签 -
width
指定边框的宽度
create_text(position,**options)
在 position 指定的位置(x, y)创建一个文本对象,创建成功后返回该文本对象的 ID,下方表格列举了各个 options 选项的具体含义:
activefill
指定当文本对象状态为 ACTIVE 时候文本的颜色activestipple
指定当文本对象状态为 ACTIVE 时候文本填充的位图anchor
- 指定文本在 position 参数的相对位置
- N, NE, E, SE, S, SW, W, NW, 或 CENTER 来定位(EWSN代表东西南北,上北下南左西右东)
- 默认值是 CENTER
disabledfill
指定当文本对象状态为 DISABLED 时候文本的颜色disabledstipple
指定当文本对象状态为 ACTIVE 时候文本填充的位图fill
指定文本的颜色font
指定文本的字体、尺寸等信息justify
- 指定对于多行文本的对齐方式
- 该选项可以使用的值有:LEFT(默认)、CENTER 和 RIGHT
offset
- 指定当点画模式时填充位图的偏移
- 该选项的值可以是:“x,y”, “#x,y”, N, NE, E, SE, S, SW, W, NW, CENTER
state
- 指定该画布对象的状态
- 可以是 NORMAL,DISABLED(不可用,不响应事件)和 HIDDEN(隐藏)
- 默认值是 NORMAL
stipple
- 指定一个位图用于填充
- 默认值是空字符串,表示实心
tags
为创建的位图对象添加标签text
指定该文本对象将要显示的文本内容width
- 如果指定该选项,则文本会在该宽度处自动断行
- 如果不指定该选项,文本对象的宽度等于文本最长行的长度
**create_window(position, **options)
在 position 指定的位置(x, y)创建一个窗口组件,创建成功后返回该窗口组件的 ID,下方表格列举了各个 options 选项的具体含义:
-
anchor
- 指定位图在 position 参数的相对位置
- N, NE, E, SE, S, SW, W, NW, 或 CENTER 来定位(EWSN代表东西南北,上北下南左西右东)
- 默认值是 CENTER
-
height
指定窗口组件的高度 -
state
- 指定该图片的状态
- 可以是 NORMAL,DISABLED(不可用,不响应事件)和 HIDDEN(隐藏)
- 默认值是 NORMAL
-
tags
为创建的图片对象添加标签 -
width
指定窗口组件的宽度 -
window
指定一个窗口组件
dchars(item, from, to=None)
删除 item 中从from 到 to(包含)参数中的字符串,item 可以是单个画布对象的 ID,也可以是某个Tag
delete(item)
删除 item 参数指定的画布对象,如果不存在 item 指定的画布对象,并不会产生错误,item 可以是单个画布对象的 ID,也可以是某个Tag
dtag(item, tag=None)
在 item 参数指定的画布对象中删除指定的 tag,如果 tag 参数被忽略,则删除指定画布对象所有的tags,如果不存在 item 指定的画布对象,并不会产生错误,item 可以是单个画布对象的 ID,也可以是某个Tag
find_above(item)
返回在 item 参数指定的画布对象之上的 ID
如果有多个画布对象符合要求,那么返回最顶端的那个
如果 item 参数指定的是最顶层的画布对象,那么返回一个空元组
item 可以是单个画布对象的 ID,也可以是某个Tag
find_all()
返回 Canvas 组件上所有的画布对象
返回格式是一个元组,包含所有画布对象的 ID
按照显示列表的顺序返回
该方法相当于 find_withtag(ALL)
find_below(item)
返回在 item 参数指定的画布对象之下的 ID
如果有多个画布对象符合要求,那么返回最底端的那个
如果 item 参数指定的是最底层的画布对象,那么返回一个空元组
item 可以是单个画布对象的 ID,也可以是某个Tag
find_closest(x, y, halo=None, start=None)
返回一个元组,包含所有靠近点(x, y)的画布对象的ID
如果没有符合的画布对象,则返回一个空元组
可选参数 halo 用于增加点(x, y)的辐射范围
可选参数 start 指定一个画布对象,该方法仅返回在显示列表中低于但最接近的一个 ID
注意,点(x, y)的坐标是采用画布坐标系来表示
find_enclosed(x1, y1, x2, y2)
返回完全包含在限定矩形内所有画布对象的 ID
find_overlapping(x1, y1, x2, y2)
返回所有与限定矩形有重叠的画布对象的 ID(让然也包含在限定矩形内的画布对象)
find_withtag(item)
返回 item 指定的所有画布对象的 ID
item 可以是单个画布对象的 ID,也可以是某个Tag
focus(item=None)
将焦点移动到指定的 item
如果有多个画布对象匹配,则将焦点移动到显示列表中第一个可以接受光标输入的画布对象
item 可以是单个画布对象的 ID,也可以是某个Tag
#### gettags(item)
返回与 item 相关联的所有 Tags
item 可以是单个画布对象的 ID,也可以是某个Tag
icursor(item, index)
将光标移动到 item 指定的画布对象
这里要求 item 指定的画布对象支持文本输入和转移焦点
item 可以是单个画布对象的 ID,也可以是某个Tag
index(item, index)
返回 index 在指定 item 中的位置(沿用 Python 的惯例:0 表示第一)
index 参数可以是:INSERT(当前光标的位置),END(最后一个字符的位置),SEL_FIRST(当前选中文本的起始位置),SEL_LAST(当前选中文本的结束位置),还可以使用格式为 “@x, y”(x 和 y 是画布坐标系)来获得与此坐标最接近的位置
item 可以是单个画布对象的 ID,也可以是某个Tag
insert(item, index, text)
在允许进行文本编辑的画布对象的指定位置插入文本
index 参数可以是:INSERT(当前光标的位置),END(最后一个字符的位置),SEL_FIRST(当前选中文本的起始位置),SEL_LAST(当前选中文本的结束位置),还可以使用格式为 “@x, y”(x 和 y 是画布坐标系)来获得与此坐标最接近的位置
item 可以是单个画布对象的 ID,也可以是某个Tag
itemcget(item, option)
获得指定 item 的选项的当前值
item 可以是单个画布对象的 ID,也可以是某个Tag
itemconfig(item, **options)
修改指定 item 的选项的当前值
item 可以是单个画布对象的 ID,也可以是某个Tag
itemconfigure(item, **options)
跟 itemconfig() 一样
lift(item, **options)
将指定画布对象移动到显示列表的顶部
item 可以是单个画布对象的 ID,也可以是某个Tag
跟 tag_raise 一样
lower(item, **options)
将指定画布对象移动到显示列表的底部
item 可以是单个画布对象的 ID,也可以是某个Tag
跟 tag_lower 一样
move(item, dx, dy)
将 item 移动到新位置(x, y)
item 可以是单个画布对象的 ID,也可以是某个Tag
scale(item, xOrigin, yOrigin, xScale, yScale)
缩放 item 指定的画布对象
xOrigin 和 yOrigin 决定要缩放的位置
xScale 和 yScale 决定缩放的比例
item 可以是单个画布对象的 ID,也可以是某个Tag
注意:该方法无法缩放 Text 画布对象
scan_dragto(x, y)
见下方 scan_mark(x, y)
scan_mark(x, y)
使用这种方式来实现 Canvas 内容的滚动
需要将鼠标按钮事件及当前鼠标位置绑定到 scan_mark(x, y) 方法,然后再将 事件及当前鼠标位置绑定到 scan_dragto(x,y) 方法,就可以实现 Canvas 在当前位置和sacn_mack(x, y) 指定的位置 (x, y) 之间滚动
select_adjust(item, index)
调整选中范围,使得给定的 index 参数指定的位置在范围内
item 可以是单个画布对象的 ID,也可以是某个Tag
select_clear()
取消 Canvas 组件中所有选中的范围
select_from(item, index)
调整选中范围的起始位置为 index 参数指定的位置
item 可以是单个画布对象的 ID,也可以是某个Tag
select_item()
范围在 Canvas 组件中当前文本的选中范围
如果没有则返回 None
select_to(item, index)
调整选中范围的结束位置为 index 参数指定的位置
tag_bind(item, event=None, callback, add=None)
为 Canvas 组件上的画布对象绑定方法
event 参数是绑定的事件名称,callback 是与之关联的方法
item 可以是单个画布对象的 ID,也可以是某个Tag
注意:与绑定事件关联的是画布对象,而不是 Tag
tag_lower(item)
将一个或多个画布对象移至底部
如果是多个画布对象,将它们都移至底部并保留原有顺序
item 可以是单个画布对象的 ID,也可以是某个Tag
注意:该方法对窗口组件无效,请使用 lower 代替
tag_raise(item)
将一个或多个画布对象移至顶部
如果是多个画布对象,将它们都移至顶部并保留原有顺序
item 可以是单个画布对象的 ID,也可以是某个Tag
注意:该方法对窗口组件无效,请使用 lift 代替
tag_unbind(item, event, callback=None)
解除与 item 绑定的事件
item 可以是单个画布对象的 ID,也可以是某个Tag
tkraise(item, **options)
将指定画布对象移动到显示列表的顶部
item 可以是单个画布对象的 ID,也可以是某个Tag
跟 tag_raise 一样
type(item)
返回指定画布对象的类型
返回值可以是:“arc”, “bitmap”,“image”, “line”, “oval”, “polygon”,“rectangle”, “text”, 或"window"
xview(*args)
该方法用于在水平方向上滚动 Canvas 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现(具体操作参考:Scrollbar)
如果第一个参数是 MOVETO,则第二个参数表示滚动到指定的位置:0.0 表示最左端,1.0 表示最右端
如果第一个参数是 SCROLL,则第二个参数表示滚动的数量,第三个参数表示滚动的单位(可以是 UNITS 或 PAGES),例如:xview(SCROLL,3, UNITS) 表示向右滚动三行
xview_moveto(fraction)
跟 xview(MOVETO, fraction) 一样
xview_scroll(number, what)
跟 xview(SCROLL, number, what) 一样
yview(*args)
该方法用于在垂直方向上滚动 Canvas 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现(具体操作参考:Scrollbar)
如果第一个参数是 MOVETO,则第二个参数表示滚动到指定的位置:0.0 表示最顶端,1.0 表示最底端
如果第一个参数是 SCROLL,则第二个参数表示滚动的数量,第三个参数表示滚动的单位(可以是 UNITS 或 PAGES),例如:yview(SCROLL,3, PAGES) 表示向下滚动三页
yview_moveto(fraction)
跟 yview(MOVETO, fraction) 一样
yview_scroll(number, what)
跟 yview(SCROLL, number, what) 一样
实例
实例中点击按钮绘制一个矩形:
from tkinter import *
class Application(Frame):
def __init__(self, master=None):
"""创建一个矩形,指定画布的颜色为白色"""
# 初始化并调用父类初始化
super().__init__(master)
self.master = master
self.pack()
self.create_widget()
def create_widget(self):
"""创建组件"""
Button(self, text="画图", command=Application.drawing).pack()
@staticmethod
def drawing():
# 创建一个Canvas,设置其背景色为白色
cv = Canvas(root, bg='white')
# 创建一个矩形,坐标为(10,10,110,110)
cv.create_rectangle(10, 10, 110, 110)
cv.pack()
root.mainloop()
# 为明显起见,将背景色设置为白色,用以区别 root
if __name__ == '__main__':
root = Tk()
root.geometry("200x200+600+500")
root.title("GUI窗口标题")
app = Application(master=root)
root.mainloop()