21-Tkinter 组件-Canvas画布控件

本文详细介绍了PythonTkinter库中的Canvas组件,用于在GUI应用中绘制图形元素,如线条、文本、图像等。Canvas提供了丰富的选项来定制图形的样式和行为,包括边框宽度、填充颜色、虚线模式等。此外,还展示了如何创建和操作各种图形对象,如矩形、椭圆、多边形等,并通过tag和方法进行管理,如删除、移动、缩放等操作。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日,当挖目相待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值