Tkinter教程之Canvas(2)篇

来源:互联网 发布:centos 7 nginx 目录 编辑:程序博客网 时间:2024/06/11 18:04
'''16.移动item'''# -*- coding: utf-8 -*-# move指定x,y在偏移量from tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色cv = Canvas(root, bg='white')# 创建两个同样的rectangle,比较移动前后的不同rt1 = cv.create_rectangle(    10, 10, 110, 110,    tags=('r1', 'r2', 'r3'))cv.create_rectangle(    10, 10, 110, 110,    tags=('r1', 'r2', 'r3'))# 移动rt1cv.move(rt1, 20, -10)cv.pack()root.mainloop()# move可以指定x,y在相对偏移量,可以为负值

'''17.删除item'''# -*- coding: utf-8 -*-# delete删除给定的itemfrom tkinter import *root = Tk()cv = Canvas(root, bg='white')# 创建两个rectanglert1 = cv.create_rectangle(    10, 10, 110, 110,    tags=('r1', 'r2', 'r3'))r2 = cv.create_rectangle(    20, 20, 110, 110,    tags=('s1', 's2', 's3'))# 使用id删除rt1cv.delete(rt1)# 使用tag删除r2cv.delete('s1')cv.pack()root.mainloop()# 两种方法删除item(id/tag)

'''18.缩放item'''# -*- coding: utf-8 -*-# scale缩放item,计算公式:(coords - offset)*scale + offsetfrom tkinter import *root = Tk()cv = Canvas(root, bg='white')# 创建两个rectanglert1 = cv.create_rectangle(    10, 10, 110, 110,    tags=('r1', 'r2', 'r3'))# 将y坐标放大为原来的2位,x坐标值不变cv.scale(rt1, 0, 0, 1, 2)cv.pack()root.mainloop()# scale的参数为(self,xoffset,yoffset,xscale,yscale)

'''19.绑定item与event'''# -*- coding: utf-8 -*-# 使用tag_bind来绑定item与事件from tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色cv = Canvas(root, bg='white')# 创建三个rectanglert1 = cv.create_rectangle(    10, 10, 110, 110,    width=8,    tags=('r1', 'r2', 'r3'))def printRect(event):    print('rectangle')# 绑定item与事件cv.tag_bind('r1', '<Button-1>', printRect)cv.pack()root.mainloop()# 只有点击到矩形的边框时才会触发事件

'''20.添加绑定事件'''# -*- coding: utf-8 -*-# 使用tag_bind来绑定item与事件,与参考上测试结果不一致。from tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色cv = Canvas(root, bg='white')# 创建三个rectanglert1 = cv.create_rectangle(    10, 10, 110, 110,    width=8,    tags=('r1', 'r2', 'r3'))def printRect(event):    print('rectangle')def printLine(event):    print('line')# 绑定item与左键事件cv.tag_bind('r1', '<Button-1>', printRect)# 绑定item与右键事件cv.tag_bind('r1', '<Button-3>', printLine)cv.pack()root.mainloop()# 只有点击到矩形的边框时才会触发事件,不使用add参数,默认就是向这个item添加一个处理函数,它不会替换原来的事件函数,例子结果:既响应左键又响应右键

'''21.绑定新的item与现有的tags'''# -*- coding: utf-8 -*-# 使用tag_bind来绑定item与事件,测试结果与参考上的说法不一致from tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色cv = Canvas(root, bg='white')# 创建三个rectanglert1 = cv.create_rectangle(    10, 10, 110, 110,    width=8,    tags=('r1', 'r2', 'r3'))def printRect(event):    print('rectangle')def printLine(event):    print('line')# 绑定item与左键事件cv.tag_bind('r1', '<Button-1>', printRect)# 绑定item与右键事件cv.tag_bind('r1', '<Button-3>', printLine)# 创建一个line,并将其tags设置为'r1'cv.create_line(10, 200, 100, 200, width=5, tags='r1')cv.pack()root.mainloop()# 将事件与tag('r1')绑定后,创建新的item并指定已绑定事件的tag,新创建的item同样也与事件绑定,这个与参考上的说法也不一致

'''Tkinter教程之Canvas篇(4)''''''22.绘制弧形'''# -*- coding: utf-8 -*-# 创建一个ARCfrom tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色cv = Canvas(root, bg='white')# 使用默认参数创建一个ARC,结果为90度的扇形cv.create_arc((10, 10, 110, 110), )'''23.设置弧形的样式'''d = {1: PIESLICE, 2: CHORD, 3: ARC}for i in d:    cv.create_arc((10, 10 + 60 * i, 110, 110 + 60 * i), style=d[i])    print(i, d[i])cv.pack()root.mainloop()

'''24.设置弧形的角度'''# -*- coding: utf-8 -*-# 使用start/extent指定起始角度与偏移角度from tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色cv = Canvas(root, bg='white')d = {1: PIESLICE, 2: CHORD, 3: ARC}for i in d:    cv.create_arc(        (10, 10 + 60 * i, 110, 110 + 60 * i),        style=d[i],  # 指定样式        start=30,  # 指定起始角度        extent=30  # 指定角度偏移量    )cv.pack()root.mainloop()# 使用三种样式,start指定起始角度;extent指定角度偏移

0 0
原创粉丝点击