一、概述
画布是一个矩形区域,用于画图或复杂图层,画布上可放置图形、文本、组件等。
二、创建画布
from tkinter import *
master=Tk()
W=Canvas(master,option=value,...)
W.pack()
#or
import tkinter as tk
master=tk.Tk()
W=tk.Canvas(master,option=value,...)
W.pack()
- 函数:w=Canvas(master, option=value,...) ,注意:“C”大写
- master: 画布的父容器。
- option:可选设置属性,这些选项可以用键 = 值的形式设置,并以逗号分隔,常用option如下表:
bd or borderwidth | 边框宽度,单位为像素(pixel),默认为2个像素。 |
bg or background | 背景颜色,默认为亮灰色, |
closeenough | 鼠标敏感值,当鼠标≤该浮点数时有效,默认为1.0。 |
confine | 如果为 true (默认), 画布不能滚动到可滑动的区域外。 |
cursor | 光标形状,如arrow、circle、 cross、 plus 等。参考: http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/cursors.html |
height | 画布高度,Y维度,参考: http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/dimensions.html |
highlightbackground | 高亮部分的背景颜色,高亮详见注释1。 |
hightlightcolor | 高亮部分颜色 |
hightlightthickness | 高亮线宽度,默认为1。 |
relief | 边框样式,可选值为 FLAT、SUNKEN、RAISED、GROOVE、RIDGE。 默认为 FLAT。 |
scrollregion | 画布可滚动区域,用一个元组 tuple (w, n, e, s)表示,w 为左边,n 为上部,e 为右边,s 为底部。 |
selectbackground | 选定区域的背景颜色 |
selectborderwidth | 选定区域的边框宽度 |
selectforeground | 选定区域的前景颜色 |
takefocus | |
width | 画布宽度,X维度。 |
xscrollincrement | 用于滚动请求水平滚动的数量值。 |
xscrollcommand | 水平滚动条,如果画布是可滚动的,则该属性是水平滚动条的 .set()方法。 |
yscrollincrement | 类似 xscrollincrement, 但是垂直方向。 |
yscrollcommand | 垂直滚动条,如果画布是可滚动的,则该属性是垂直滚动条的 .set()方法。 |
注释:高亮(highlight)是指键盘输入当前指向该组件。
三、画布可“画”以下常见标准对象
(1)扇形
- canvas.create_arc(x1,y1,x2,y2,start=s,extent=e,fill=color)
- 解释:在以(x0,y0)、(x1,y1)分别为左上角、右下角顶点的矩形内画相切圆或椭圆,以s角度开始至e角度结束的圆弧,填充颜色为color。
(2)线段
- canvas.create_line(x1,y1,x2,y2,fill=color,width=value)
- 以(x1,y1)为线段起点,以(x2,y2)为线段终点,线段颜色为color,线段粗细为value。
(3)圆/椭圆
- canvas.create_oval(x1,y1,x2,y2,fill=color)
- 在以(x0,y0)、(x1,y1)分别为左上角、右下角顶点的矩形内画相切圆或椭圆,填充颜色为color。
(4)矩形
- canvas.create_rectangle(x1,y1,x2,y2,fill=color)
- 以(x1,y1)为左上顶角坐标,以(x2,y2)为右下顶角坐标。
(5)多边形
- canvas.create_polygon(x0,y0,x1,y1,...,xn,yn,fill=color,outline=color)
- 创建以(x0,y0)、(x1,y1)、(x2,y2)等为顶点的多边形,外边框颜色为color。
(6)文本
- canvas.create_text(x,y,text=content,font=value,...)
- 创建以(x,y)为起点的文本框,文本框内容为content(字符串类型),字体为value。
- font=("Arial",15,"bold"),表示字体为Arial,字号=15,加粗(bold)