鱼c笔记——Python 的 GUI 编程(八):Tkinter 的 Canvas 组件 1

Canvas 组件是一个通用的组件,通常用于显示和编辑图形,我们可以用它来绘制直线三角形多边形甚至是绘制其他的组件,所以说 Canvas 组件可以让我们随心所欲的绘制界面。

 

绘制对象

在 Canvas 上绘制对象,我们可以使用 create 方法

from tkinter import *

root = Tk()

w =Canvas(root, width=200, height=100)  #width和height单位是像素
w.pack()
#到这里还是看不见Canvas的,不过可以通过设置Canvas的background属性来改变背景颜色

#create后面加上下横线再加上我们要绘制对象的名字
w.create_line(0, 50, 200, 50, fill='yellow')  #前两个参数描述的是直线的起始位置是水平方向的第0个像素和竖直方向的第50像素。fill设置填充颜色
w.create_line(100, 0, 100, 100, fill='red', dash=(4, 4))  #dash是设置虚线
w.create_rectangle(50, 25, 150, 75, fill='blue')  #左上角右下角的坐标
#这三个画布对象没有意外的话会一直保留着,直到你去修改它们,它们就可能会被覆盖。
#例如说这条黄线本来是从左至右贯穿整个Canvas的,但是被矩形覆盖了,中间被覆盖的位置就看不到了
#还有一些方法可以对这些画布对象进行修改,如Canvas实例对象的coords() itemconfig() move()方法,删除的话可以用delete()方法。下例将进行演示

mainloop()

 

修改对象

下面将演示如何修改画布对象。使用的方法在上例的注释有提及

from tkinter import *

root = Tk()

w =Canvas(root, width=200, height=100)
w.pack()

line1 = w.create_line(0, 50, 200, 50, fill='yellow')
line2 = w.create_line(100, 0, 100, 100, fill='red', dash=(4, 4))
rect1 = w.create_rectangle(50, 25, 150, 75, fill='blue')

w.coords(line1, 0 ,25, 200, 25)  #用该方法把对象移动到一个新的位置
w.itemconfig(rect1, fill='red')  #主要是设置对象的选项
w.delete(line2)  #直接将对象的名字放进去就可以实现删除

Button(root, text='删除全部对象', command=(lambda x=ALL:w.delete(x))).pack()
#ALL是一个tag,表示所有的对象

mainloop()

显示文本

还可以在 Canvas 上显示文本:

 

from tkinter import *

root = Tk()

w =Canvas(root, width=200, height=100)
w.pack()

w.create_line(0, 0, 200, 100, fill='green', width=3) #线的宽度为3个像素
w.create_line(200, 0, 0, 100, fill='green', width=3)
w.create_rectangle(40, 20, 160, 75, fill='green')
w.create_rectangle(65, 35, 135, 65, fill='yellow')

w.create_text(100, 50, text='Study')  #可以修改ancoror选项使文本起始位置改变

mainloop()

画圆或椭圆

 

在 Canvas 上画圆形或椭圆形

from tkinter import *

root = Tk()

w =Canvas(root, width=200, height=100)
w.pack()

w.create_rectangle(40, 20, 160, 80, dash=(4, 4))
w.create_oval(40, 20, 160, 80, fill='pink')  #前面四个参数表示限定矩形所在的位置
#圆形就是限定矩形为正方形
#如w.create_oval(70, 20, 130, 80, fill='pink')

w.create_text(100, 50, text='Study')

mainloop()

画多边形

Canvas 上画多边形可以使用 create_polygon 方法。下例是画一个五角星,首先要确定五个角的坐标:

from tkinter import *
import math as m

root = Tk()

w =Canvas(root, width=200, height=100)
w.pack()

center_x = 100  #五角星中心点的坐标和半径
center_y = 50
r = 50

points = [
    #左上点
    center_x - int(r * m.sin(2 * m.pi / 5)),
    center_y - int(r * m.cos(2 * m.pi / 5)),
    #右上点
    center_x + int(r * m.sin(2 * m.pi / 5)),
    center_y - int(r * m.cos(2 * m.pi / 5)),
    #左下角
    center_x - int(r * m.sin(m.pi / 5)),
    center_y + int(r * m.cos(m.pi / 5)),
    #顶点
    center_x,
    center_y - r,
    #右下点
    center_x + int(r * m.sin(m.pi / 5)),
    center_y + int(r * m.cos(m.pi / 5)),
    ]

w.create_polygon(points, outline='green', fill='yellow') #方法把传入的两个点间连一条线,反复调用该方法看可以画出一个多边形

mainloop()

 

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值