## 简介
Canvas(画布)组件为 Tkinter 的图形绘制提供了基础。Canvas 是一个高度灵活的组件,你可以用它绘制图形和图表,创建图形编辑器,并实现各种自定义的小部件。
## 何时使用 Canvas 组件?
Canvas 是一个通用的组件,通常用于显示和编辑图形。你可以用它来绘制线段、圆形、多边形,甚至是绘制其它组件。
## 语法
语法格式如下:
```
w = Canvas ( master, option=value, ... )
```
**Canvas 组件支持以下标准选项:**
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)
```
## 参数
Canvas(master=None, **options) (class)
* master: 按钮的父容器。
* options: 可选项,即该按钮的可设置的属性。这些选项可以用键 = 值的形式设置,并以逗号分隔。下方表格详细列举了各个选项的具体含义和用法:
| **选项** | **含义** |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| background | 指定 Canvas 的背景颜色 |
| bg | 跟 background 一样 |
| borderwidth | 指定 Canvas 的边框宽度 |
| bd | 跟 borderwidth 一样 |
| closeenough | 1. 指定一个距离,当鼠标与画布对象的距离小于该值时,鼠标被认为在画布对象上
2. 该选项是一个浮点类型的值 |
| confine | 1. 指定 Canvas 组件是否允许滚动超出 scrollregion 选项指定的范围
2. 默认值是 True |
| cursor | 指定当鼠标在 Canvas 上飘过的时候的鼠标样式 |
| height | 1. 指定 Canvas 的高度
2. 单位是像素 |
| highlightbackground | 指定当 Canvas 没有获得焦点的时候高亮边框的颜色 |
| highlightcolor | 指定当 Canvas 获得焦点的时候高亮边框的颜色 |
| highlightthickness | 指定高亮边框的宽度 |
| relief | 1. 指定 Canvas 的边框样式
2. 默认值是 "flat"
3. 其他可以选择的值是 "sunken","raised","groove" 和 "ridge" |
| scrollregion | 1. 指定 Canvas 可以被滚动的范围
2. 该选项的值是一个 4 元组(x1, y1, x2, y2)表示的矩形 |
| selectbackground | 指定当画布对象被选中时的背景色 |
| selectborderwidth | 指定当画布对象被选中时的边框宽度(选中边框) |
| selectforeground | 指定当画布对象被选中时的前景色 |
| state | 1. 设置 Canvas 的状态:"normal" 或 "disabled"
2. 默认值是 "normal"3. 注意:该值不会影响画布对象的状态 |
| takefocus | 1. 指定使用 Tab 键可以将焦点移动到输入框中
2. 默认是开启的,可以将该选项设置为 False 避免焦点在此输入框中 |
| width | 1. 指定 Canvas 的宽度
2. 单位是像素 |
| xscrollcommand | 1. 与 scrollbar(滚动条)组件相关联(水平方向)
2. 使用方法可以参考:[Scrollbar 组件](https://bbs.266.la/forum.php?mod=viewthread&tid=1605) |
| xscrollincrement | 1. 该选项指定 Canvas 水平滚动的“步长”
2. 例如 '3c' 表示 3 厘米,还可以选择的单位有 'i'(英寸),'m'(毫米)和 'p'(DPI,大约是 '1i' 等于 '72p')
3. 默认值是 0,表示可以水平滚动到任意位置 |
| yscrollcommand | 1. 与 scrollbar(滚动条)组件相关联(垂直方向)
2. 使用方法可以参考:[Scrollbar 组件](https://bbs.266.la/forum.php?mod=viewthread&tid=1605) |
| yscrollincrement | 1. 该选项指定 Canvas 垂直滚动的“步长”
2. 例如 '3c' 表示 3 厘米,还可以选择的单位有 'i'(英寸),'m'(毫米)和 'p'(DPI,大约是 '1i' 等于 '72p')
3. 默认值是 0,表示可以水平滚动到任意位置 |
## 实例
```
from tkinter import *
root = Tk()
w = Canvas(root,width=200,height=100,background = "white")
w.pack()
mainloop()
```