Tkinter教程之Canvas篇(3)
2007-10-05 12:59
232 查看
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'''Tkinter教程之Canvas篇(3)'''
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'''16.移动item'''
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# -*- coding: cp936 -*-
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# move指定x,y在偏移量
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
from Tkinter import *
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
root = Tk()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 创建一个Canvas,设置其背景色为白色
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv = Canvas(root,bg = 'white')
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 创建两个同样的rectangle,比较移动前后的不同
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
rt1 = cv.create_rectangle(
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
10,10,110,110,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
tags = ('r1','r2','r3'))
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.create_rectangle(
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
10,10,110,110,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
tags = ('r1','r2','r3'))
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 移动rt1
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.move(rt1,20,-10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.pack()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
root.mainloop()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# move可以指定x,y在相对偏移量,可以为负值
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'''17.删除item'''
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# -*- coding: cp936 -*-
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# delete删除给定的item
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
from Tkinter import *
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
root = Tk()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv = Canvas(root,bg = 'white')
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 创建两个rectangle
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
rt1 = cv.create_rectangle(
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
10,10,110,110,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
tags = ('r1','r2','r3'))
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
r2 = cv.create_rectangle(
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
20,20,110,110,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
tags = ('s1','s2','s3'))
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 使用id删除rt1
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.delete(rt1)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 使用tag删除r2
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.delete('s1')
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.pack()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
root.mainloop()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 两种方法删除item(id/tag)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'''18.缩放item'''
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# -*- coding: cp936 -*-
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# scale缩放item,计算公式:(coords - offset)*scale + offset
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
from Tkinter import *
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
root = Tk()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv = Canvas(root,bg = 'white')
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 创建两个rectangle
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
rt1 = cv.create_rectangle(
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
10,10,110,110,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
tags = ('r1','r2','r3'))
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 将y坐标放大为原来的2位,x坐标值不变
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.scale(rt1,0,0,1,2)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.pack()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
root.mainloop()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# scale的参数为(self,xoffset,yoffset,xscale,yscale)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'''19.绑定item与event'''
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# -*- coding: cp936 -*-
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 使用tag_bind来绑定item与事件
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
from Tkinter import *
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
root = Tk()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 创建一个Canvas,设置其背景色为白色
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv = Canvas(root,bg = 'white')
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 创建三个rectangle
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
rt1 = cv.create_rectangle(
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
10,10,110,110,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
width = 8,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
tags = ('r1','r2','r3'))
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
def printRect(event):
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
print 'rectangle'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 绑定item与事件
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.tag_bind('r1','<Button-1>',printRect)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.pack()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
root.mainloop()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 只有点击到矩形的边框时才会触发事件
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'''20.添加绑定事件'''
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# -*- coding: cp936 -*-
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 使用tag_bind来绑定item与事件,与参考上测试结果不一致。
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
from Tkinter import *
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
root = Tk()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 创建一个Canvas,设置其背景色为白色
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv = Canvas(root,bg = 'white')
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 创建三个rectangle
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
rt1 = cv.create_rectangle(
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
10,10,110,110,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
width = 8,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
tags = ('r1','r2','r3'))
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
def printRect(event):
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
print 'rectangle'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
def printLine(event):
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
print 'line'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 绑定item与左键事件
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.tag_bind('r1','<Button-1>',printRect)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 绑定item与右键事件
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.tag_bind('r1','<Button-3>',printLine)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.pack()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
root.mainloop()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 只有点击到矩形的边框时才会触发事件,不使用add参数,默认就是向这个item添加一个处理函数,它不会替换原来的事件函数,例子结果:既响应左键又响应右键
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'''21.绑定新的item与现有的tags'''
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# -*- coding: cp936 -*-
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 使用tag_bind来绑定item与事件,测试结果与参考上的说法不一致
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
from Tkinter import *
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
root = Tk()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 创建一个Canvas,设置其背景色为白色
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv = Canvas(root,bg = 'white')
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 创建三个rectangle
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
rt1 = cv.create_rectangle(
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
10,10,110,110,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
width = 8,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
tags = ('r1','r2','r3'))
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
def printRect(event):
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
print 'rectangle'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
def printLine(event):
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
print 'line'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 绑定item与左键事件
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.tag_bind('r1','<Button-1>',printRect)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 绑定item与右键事件
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.tag_bind('r1','<Button-3>',printLine)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 创建一个line,并将其tags设置为'r1'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.create_line(10,200,100,200,width = 5,tags = 'r1')
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
cv.pack()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
root.mainloop()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
# 将事件与tag('r1')绑定后,创建新的item并指定已绑定事件的tag,新创建的item同样也与事件绑定,这个与参考上的说法也不一致
相关文章推荐
- Tkinter教程之Canvas(1)篇
- python-Tkinter教程之Canvas篇(2)
- Tkinter教程之Canvas(2)篇
- [Tkinter 教程08] Canvas 图形绘制
- Tkinter教程之Canvas篇(3)
- python--Tkinter教程之Canvas篇(3)
- Tkinter教程之Canvas篇(1)
- Tkinter教程之Canvas篇(2)
- python-Tkinter教程之Canvas篇(1)
- Tkinter教程之Canvas篇(4)
- HTML5之Canvas绘图——使用Canvas绘制图形的基本教程
- [转]html5 Canvas画图教程(1)—画图的基本常识
- [转]html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
- [Tkinter 教程02] Message 控件
- [Tkinter 教程15] event 事件绑定
- Tkinter教程之Text(1)篇
- Python Tkinter教程之Pack篇
- Python Tkinter教程之Event篇(3)
- 通过HTML5 Canvas API绘制弧线和圆形的教程
- canvas系列教程01-编辑器和helloword