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
- Tkinter教程之Canvas篇(2)
- python-Tkinter教程之Canvas篇(2)
- Tkinter教程之Canvas(2)篇
- Tkinter教程之Canvas篇(1)
- Tkinter教程之Canvas篇(3)
- Tkinter教程之Canvas篇(4)
- python-Tkinter教程之Canvas篇(1)
- python--Tkinter教程之Canvas篇(3)
- Tkinter教程之Canvas(1)篇
- Tkinter教程之Canvas篇(3)
- Tkinter之Canvas篇
- Tkinter教程之Button篇(2)
- Tkinter教程之Text(2)篇
- Tkinter教程之Event篇(2)
- Python Tkinter教程之Text(2)篇
- Python Tkinter教程之Event篇(2)
- Tkinter教程之Text(2)篇
- Tkinter教程之Event篇(2)
- 计算器2
- 性能大提速 MyEclipse终极优化四要点
- HTTP协议中PUT和POST使用区别
- 递归回溯
- HDOJ 2082 找单词(母函数模板)、 HDOJ 1028 整数拆分(母函数+打表)
- Tkinter教程之Canvas(2)篇
- ERP需求调研之仓库物料管理十问十答
- 通过广播简单实现sms短信的发送和接收
- java 调用webview js方法, webview js调用java方法
- Jsp语法
- spring + maven 基于注解的配置(2)
- 网站测试流程与规范
- JavaScript运行过程中的“预编译阶段”和“执行阶段”
- 动态规划--钢条切割