重明鸟软件知识平台
@TKinter(6):Canvas控件
Canvas(画布)组件为 Tkinter 的图形绘制提供了基础。Canvas 是一个高度灵活的组件,你可以用它绘制图形和图表,创建图形编辑器,并实现各种自定义的小部件。
Canvas 组件支持对象
arc(弧形、弦或扇形)
coord = 10, 50, 240, 210
arc = canvas.create_arc(coord, start=0, extent=150, fill="blue")
image(BitmapImage 或PhotoImage 的实例对象)
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)
rectangle(矩形)
canvas.create_rectangle(x0,y0,x1,,y1,options)
text(文本)
canvas.create_text(x,y,text = 'my text',options) 
window(组件)
canvas.create_window(200, 10, window=control, options)
其中,弦、扇形、椭圆形、圆形、多边形和矩形这些“封闭式”图形都是由轮廓线和填充颜色组成的,但都可以设置为透明(传入空字符串表示透明)。

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 组件

xscrollincrement

1. 该选项指定 Canvas 水平滚动的“步长”
2. 例如 '3c' 表示 3 厘米,还可以选择的单位有 'i'(英寸),'m'(毫米)和 'p'(DPI,大约是 '1i' 等于 '72p')
3. 默认值是 0,表示可以水平滚动到任意位置

yscrollcommand

1. 与 scrollbar(滚动条)组件相关联(垂直方向)
2. 使用方法可以参考:Scrollbar 组件

yscrollincrement

1. 该选项指定 Canvas 垂直滚动的“步长”
2. 例如 '3c' 表示 3 厘米,还可以选择的单位有 'i'(英寸),'m'(毫米)和 'p'(DPI,大约是 '1i' 等于 '72p')
3. 默认值是 0,表示可以水平滚动到任意位置


示范例子:
#引入tkinter包
import tkinter as tk
  
#创建TK窗口
root = tk.Tk()#Tk中T是在大写,k是小写
 
#创建canvas控件
canvas = tk.Canvas(root, width=500, height=400,bg='blue')
canvas.pack()

img = tk.PhotoImage(file="t.png")
canvas.create_image(10,10,anchor='nw', image=img)

#绘制黄色矩形
canvas.create_rectangle(40,40,100,100,fill='yellow')

#创建一个按钮
bn1 = tk.Button(root,text='hello',width=30,height=4)

#增加控件
canvas.create_window(200, 10, window=bn1, anchor='nw')

#TK窗口轮询事件
root.mainloop()
运行结果:
@站内查找
@栏目文章
【基础教程】TKinter(7):Menu控件
【基础教程】TKinter(6):Canvas控件
【基础教程】TKinter(5):Label控件
【基础教程】TKinter(4):Messagebox控件
【基础教程】TKinter(3):Button控件
【基础教程】TKinter(2):控件及其属性
【基础教程】TKinter(1):第一个tkinter程序
【基础教程】Python守护进程创建
【基础教程】PyGame(13):三维环境设置
【基础教程】C/C++指针函数和回调函数
【基础教程】C/C++多进程编程(3)
【基础教程】C/C++多进程编程(2)
【基础教程】C/C++多进程编程(1)
【基础教程】C/C++多线程编程(2)
【基础教程】C/C++多线程编程(1)
【基础教程】C/C++动态库编程
【基础教程】C/C++静态库编程
【基础教程】photoshop图片混合公式
【基础教程】PyGame(12):旋转和缩放
【基础教程】PyGame(11):Surface操作
【基础教程】网络编程:Epoll(2)
【基础教程】网络编程:Epoll(1)
【基础教程】网络编程:IOCP(3)
【基础教程】网络编程:IOCP(2)
【基础教程】网络编程:IOCP(1)
【基础教程】网络编程:UDP
【基础教程】网络编程:TCP
【基础教程】Ubuntu安装Hadoop(4)
【基础教程】Ubuntu安装Hadoop(3)
【基础教程】Ubuntu安装Hadoop(2)
【基础教程】Ubuntu安装Hadoop(1)
【基础教程】Hadoop技术原理
【基础教程】Hadoop基本命令
【基础教程】Hadoop是什么东西
【基础教程】排序算法介绍
【基础教程】PyGame(10):声音控制
【基础教程】PyGame(9):鼠标事件(2)
【基础教程】PyGame(8):鼠标事件(1)
【基础教程】PyGame(7):键盘事件(2)
【基础教程】PyGame(6):键盘事件(1)
【基础教程】PyGame(5):显示图片
【基础教程】PyGame(4):显示文字
【基础教程】PyGame(3):图元绘制
【基础教程】PyGame(2):游戏框架
【基础教程】PyGame(1):开发环境搭建
【基础教程】Python(10):类定义
【基础教程】Python(9):自定义模块
【基础教程】Python(8):输入输出控制
【基础教程】Python(7):函数定义
【基础教程】Python(6):中断语句
【基础教程】Python(5):判断语句
【基础教程】Python(4):循环语句
【基础教程】Python(3):变量与运算符
【基础教程】Python(2):Hello
【基础教程】Python(1):介绍与安装
Copyright @ 2011-2018 by szc  桂ICP备11003301号-1  桂公网安备45040302000027号  Email:szcsoft@qq.com