Python tkinter Canvas画布完全攻略

本文详细介绍了Python的Tkinter库中Canvas组件的使用,包括如何绘制矩形、椭圆、直线等图形,以及图形的填充、边框等选项设置。此外,还探讨了Canvas图形项的操作,如添加、删除标签,移动、缩放图形项等,展示了如何通过Canvas实现简单的五子棋游戏界面。
摘要由CSDN通过智能技术生成

Tkinter 提供了 Canvas 组件来实现绘图。程序既可在 Canvas 中绘制直线、矩形、椭圆等各种几何图形,也可绘制图片、文字、UI 组件(如 Button)等。Canvas 允许重新改变这些图形项(Tkinter 将程序绘制的所有东西统称为 item)的属性,比如改变其坐标、外观等。

Canvas 组件的用法与其他 GUI 组件一样简单,程序只要创建并添加 Canvas 组件,然后调用该组件的方法来绘制图形即可。如下程序示范了最简单的 Canvas 绘图:


from tkinter import *
# 创建窗口
root = Tk()
# 创建并添加Canvas
cv = Canvas(root, background='white')
cv.pack(fill=BOTH, expand=YES)
cv.create_rectangle(30, 30, 200, 200,
outline='red', # 边框颜色
stipple = 'question', # 填充的位图
fill="red", # 填充颜色
width=5 # 边框宽度
)
cv.create_oval(240, 30, 330, 200,
outline='yellow', # 边框颜色
fill='pink', # 填充颜色
width=4 # 边框宽度
)
root.mainloop()

上面程序先创建并添加了 Canvas 组件,分别绘制了矩形和椭圆。运行上面程序,可以看到如图 1 所示的效果。

图 1 最简单的 Canvas 绘图

从上面程序可以看到,Canvas 提供了 create_rectangle() 方法绘制矩形和 create_oval() 方法绘制椭圆(包括圆,圆是椭圆的特例)。实际上,Canvas 还提供了如下方法来绘制各种图形:

create_arc:绘制弧。

create_bitmap:绘制位图。

create_image:绘制图片。

create_line():绘制直线。

create_polygon:绘制多边形。

create_text:绘制文字。

create_window:绘制组件。

Canvas 的坐标系统是绘图的基础,其中点 (0,0) 位于 Canvas 组件的左上角,X 轴水平向右延伸,Y 轴垂直向下延伸。

绘制上面这些图形时需要简单的几何基础:

在使用 create_line() 绘制直线时,需要指定两个点的坐标,分别作为直线的起点和终点。

在使用 create_rectangle() 绘制矩形时,需要指定两个点的坐标,分别作为矩形左上角点和右下角点的坐标。

在使用 create_oval() 绘制椭圆时,需要指定两个点的坐标,分别作为左上角点和右下角点的坐标来确定一个矩形,而该方法则负责绘制该矩形的内切椭圆,如图 2 所示。

图 2 内切椭圆

从图 2 可以看出,只要矩形确定下来,该矩形的内切椭圆就能确定下来,而 create_oval() 方法所需要的两个坐标正是用于指定该矩形的左上角点和右下角点的坐标。

在使用 create_arc 绘制弧时,和 create_oval 的用法相似,因为弧是椭圆的一部分,因此同样也是指定左上角和右下角两个点的坐标,默认总是绘制从 3 点(0)开始,逆时针旋转 90° 的那一段弧。程序可通过 start 改变起始角度,也可通过 extent 改变转过的角度。

在使用 create_polygon 绘制多边形时,需要指定多个点的坐标来作为多边形的多个定点;在使用 create_bitmap、create_image、create_text、create_window 等方法时,只要指定一个坐标点,用于指定目标元素的绘制位置即可。

在绘制这些图形时可指定如下选项:

fill:指定填充颜色。如果不指定该选项,默认不填充。

outline:指定边框颜色。

width:指定边框宽度。如果不指定该选项,边框宽度默认为 1。

dash:指定边框使用虚线。该属性值既可为单独的整数,用于指定虚线中线段的长度;也可为形如(5,2,3)格式的元素,此时5 指定虚线中线段的长度,2 指定间隔长度,3 指定虚线长度……依此类推。

stipple:使用位图平铺进行填充。该选项可与 fill 选项结合使用,fill 选项用于指定位图的颜色。

style:指定绘制弧的样式。该选项仅对 create_arc 方法起作用。该选项支持 PIESLICE(扇形)、CHORD(弓形)、ARC(仅绘制弧)选项值。

start:指定绘制弧的起始角度。该选项仅对 create_arc 方法起作用。

extent:指定绘制弧的角度。该选项仅对 create_arc 方法起作用。

arrow:指定绘制直线时两端是否有箭头。该选项支持 NONE(两端无箭头)、FIRST(开始端有箭头)、LAST(结束端有箭头)、BOTH(两端都有箭头)选项值。

arrowshape:指定箭头形状。该选项是一个形如 "20 20 10" 的字符串,字符串中的三个整数依次指定填充长度、箭头长度、箭头宽度。

joinstyle:指定直接连接点的风格。仅对绘制直线和多向形有效。该选项支持 METTER、ROUND、BEVEL 选项值。

anchor:指定绘制文字、GUI 组件的位置。该选项仅对 create_text()、create_window() 方法有效。

justify:指定文字的对齐方式。该选项支持 CENTER、LEFT、RIGHT 常量值,该选项仅对 create_text 方法有效。

下面程序示范了通过不同的方法来绘制不同的图形,这些图形分别使用不同的边框、不同的填充效果:


from tkinter import *
# 创建窗口
root = Tk()
root.title('绘制图形项')
# 创建并添加Canvas
cv = Canvas(root, background='white', width=830, height=830)
cv.pack(fill=BOTH, expand=YES)
columnFont = ('微软雅黑', 18)
titleFont = ('微软雅黑', 20, 'bold')
# 使用循环绘制文字
for i, st in enumerate(['默认', '指定边宽', '指定填充', '边框颜色', '位图填充']):
cv.create_text((130 + i * 140, 20),text = st,
font = columnFont,
fill='gray',
anchor = W,
justify = LEFT)
# 绘制文字
cv.create_text(10, 60, text = '绘制矩形',
font = titleFont,
fill='magenta',
anchor = W,
justify = LEFT)
# 定义列表,每个元素的4个值分别指定边框宽度、填充色、边框颜色、位图填充
options = [(None, None, None, None),
(4, None, None, None),
(4, 'pink', None, None),
(4, 'pink', 'blue', None),
(4, 'pink', 'blue', 'error')]
# 采用循环绘制5个矩形
for i, op in enumerate(options):
cv.create_rectangle(130 + i * 140, 50, 240 + i * 140, 120,
width = op[0], # 边框宽度
fill = op[1], # 填充颜色
outline = op[2], # 边框颜色
stipple = op[3]) # 使用位图填充
# 绘制文字
cv.create_text(10, 160, text = '绘制椭圆',
font = titleFont,
fill='magenta',
anchor = W,
justify = LEFT)
# 定义列表,每个元素的4个值分别指定边框宽度、填充色、边框颜色、位图填充
options = [(None, None, None, None),
(4, None, None, None),
(4, 'pink', None, None),
(4, 'pink', 'blue', None),
(4, 'pink', 'blue', 'error'
  • 6
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python TkinterCanvas画布)是一个可以用来绘制图形的小部件。它允许你在窗口上创建各种形状的图形,包括线条、矩形、圆形、椭圆、多边形等。你可以在画布上设置颜色、大小、位置等属性,并通过代码来操纵这些属性。 创建一个画布的基本步骤如下: 1. 导入Tkinter模块 2. 创建主窗口 3. 创建Canvas对象并指定宽度和高度 4. 使用各种形状的绘图方法来创建图形 5. 使用pack()或grid()方法将Canvas添加到主窗口中 例如,下面的代码创建一个大小为400x400像素的画布,并在其中绘制一个矩形和一个椭圆: ``` python from tkinter import * root = Tk() canvas = Canvas(root, width=400, height=400) canvas.pack() # 绘制矩形 canvas.create_rectangle(50, 50, 150, 150, fill="blue") # 绘制椭圆 canvas.create_oval(200, 200, 300, 300, fill="red") root.mainloop() ``` 这里使用了Canvas对象的`create_rectangle()`和`create_oval()`方法来创建矩形和椭圆,分别指定它们的左上角和右下角坐标,并设置了填充颜色。这些形状将被添加到画布中,并通过`pack()`方法将画布添加到主窗口中。 Canvas还有许多其他的方法和属性可以用来控制画布中的图形,可以根据需要进行学习和使用。 ### 回答2: Python Tkinter是一个用于图形用户界面(GUI)编程的Python工具包。Tkinter包括许多控件,例如按钮、标签和画布画布Tkinter中最灵活的控件之一,它是一个以像素为单位的矩形区域,可以在上面绘制图像、文本和形状。_canvas_ 组件是 Tkinter画布组件,它被用来实现2D图形。 使用_canvas_组件,我们可以轻松创建自定义图形应用程序。canvas提供了许多方法来绘制不同类型的图像,例如线、矩形、椭圆、弧、多边形等。在 Tkinter 中,_canvas_ 是一个单独的组件,常与其他 Tkinter 组件一起使用,例如按钮、列表框和文本框。 在Python中,使用Tkinter Canvas控件绘制图形可以分为以下三个步骤: 1. 创建_canvas_:在 Tkinter 窗口中创建_canvas_对象。 2. 绘制图形:使用_canvas_提供的各种方法在_canvas_中绘制具体图形。 3. 添加_canvas_到窗口:使用_grid()或_pack()等 Tkinter 布局方法将_canvas_添加到应用程序窗口中。 下面是一些_canvas_控件的示例代码: ``` python from tkinter import * root= Tk() canvas = Canvas(root, width = 300, height = 300) canvas.pack() canvas.create_rectangle(10, 10, 200, 200, fill="red") canvas.create_line(0, 0, 300, 300, fill="blue") root.mainloop() ``` 此代码创建一个大小为300*300像素的_canvas_,并在其上绘制了红色矩形和蓝色直线。 总之,画布Tkinter 极为有用的组件之一,它可以用于绘制各种图形并轻松地创建自定义图像应用。花费一些时间学习_canvas_ 的各种方法和特性,以使您的 Python 图形编程技能更加丰富和多样化。 ### 回答3: Python tkinter框架是Python语言中常用的GUI工具包,其中的canvas画布模块提供了强大的绘图能力,可以用于创建各种复杂的图形界面。 canvas画布模块提供了一个可供绘制的空间,可以使用它来绘制图形、显示文本和图片等。在canvas中,我们可以利用一些基本的绘图元素,如矩形、椭圆、折线、曲线等,以及对它们的填充和边框进行操作,创建出我们需要的各种图形。 canvas画布模块主要用到以下几种类: 1. Canvas类:它是我们在程序中创建画布的类,它提供了各种绘图方法和工具。 2. Item类:它是画布上的所有绘图元素的基类,包括矩形、椭圆、折线、曲线、文本等。 3. 绘制方法:包括create_line()、create_rectangle()、create_oval()、create_polygon()、create_text()等,可以根据需要选择合适的方法进行绘制。 在绘制图形时,canvas也提供了许多常用的属性设置,如颜色、线条粗细、填充等等。通过这些属性的设置,我们可以最终创建出自己想要的图形。 此外,canvas画布模块还支持一些常见的事件响应机制,例如鼠标事件、键盘事件、聚焦事件等,我们可以通过绑定这些事件的响应函数,实现与用户的交互。 总之,Python tkinter canvas画布是一个非常强大的绘图工具,它可以帮助我们实现各种复杂的界面和图形,如果你需要开发GUI应用程序,canvas模块是一个不错的选择。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值