小白学tkinter(Canvas组件(画布))

Canvas组件,通常用于显示和编辑图形。
在Canvas上绘制对象,可以用add_xxx()的方法(xxx表示对象类型,
例如直线line、矩形rectangle和文本text等)

from tkinter import *
root = Tk()
w = Canvas(root,width = 200,height = 100,bg = 'white')
w.pack()
w.create_line(0,50,200,50,fill = 'yellow')
 #dash属性 虚线 fill填充颜色
w.create_line(100,0,100,100,fill = 'red',dash = (4,4))
#outline这是边框颜色 width 边框宽度
w.create_rectangle(50,25,150,75,fill = 'blue',outline = 'black',width = 5)
root.mainloop()

添加到Canvas上的对象会一直保留。如果希望修改他们需要
使用coods()、itemconfig()、move(方法)

from tkinter import *
root = Tk()
w = Canvas(root,bg = 'white')
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) #删除组件
w.create_text(100,50,text = '我爱PYTHON',fill = 'blue') #添加文本
Button(root,text = '删除',command = (lambda x = ALL:w.delete(x))).pack()
root.mainloop()

绘制椭圆形或者圆形,使用create_oval()方法,
参数是一个限定矩形(Tkinter会自动在这个矩形内绘制一个椭圆),
如果绘制圆形,限定矩形为正方形

from tkinter import *
root = Tk()
w = Canvas(root,bg = 'white')
w.pack()
w.create_rectangle(40,20,160,80,dash = (4,4))#这一行可以不用
w.create_oval(40,20,160,80,fill = 'red')#第一组参数就是限定矩形参数
w.create_text(100,50,text = '我爱PYTHON')

root.mainloop()

可以与事件进行绑定,这以实现画图为例。原理:Tkinter未提供点的工具,
但可以绘制特别小的椭圆来代替,
通过相应‘鼠标左键按住拖动’事件(B1-Motion),
在拖动鼠标的同时获取实时位置(x,y),兵绘制一个超小的椭圆来代替。

from tkinter import *
root = Tk()
w = Canvas(root,bg = 'white')
w.pack()

def paint(event):
    x1,y1 = (event.x -1),(event.y -1)
    x2,y2 = (event.x +1),(event.y +1)
    w.create_oval(x1,y1,x2,y2,fill='red') #实时获取的坐标作为参数

w.bind('<B1-Motion>',paint)

Label(root,text = '按住鼠标左键并移动,绘图吧......').pack(side = BOTTOM)
mainloop()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值