发布时间:2018-06-07 21:36:47编辑:Run阅读(4618)
移动 item
move 指定 x,y 在偏移量
代码:
import tkinter as tk root = tk.Tk() # 创建一个 Canvas,设置其背景色为白色 cv = tk.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')) # 移动rt1 cv.move(rt1, 20, -10) cv.pack() root.mainloop()
结果:
move 可以指定 x,y 在相对偏移量,可以为负值
删除 item
delete 删除给定的 item
代码:
import tkinter as tk root = tk.Tk() # 创建一个 Canvas,设置其背景色为白色 cv = tk.Canvas(root, bg='white') # 创建两个同样的 rectangle,比较移动前后的不同 rt1 = cv.create_rectangle(10,10,110,110, tags=('r1', 'r2', 'r3')) rt2 = cv.create_rectangle(20,20,110,110, tags=('s1', 's2', 's3')) # 使用 id 删除 rt1 cv.delete(rt1) # 使用 tag 删除 rt2 cv.delete('s1') cv.pack() root.mainloop()
结果:
两种方法删除 item(id/tag)
缩放 item
scale 缩放 item,计算公式:(coords - offset)*scale + offset
代码:
import tkinter as tk root = tk.Tk() # 创建一个 Canvas,设置其背景色为白色 cv = tk.Canvas(root, bg='white') # 创建两个同样的 rectangle,比较移动前后的不同 rt1 = 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)
绑定 item 与 event
使用 tag_bind 来绑定 item 与事件
代码:
import tkinter as tk root = tk.Tk() # 创建一个 Canvas,设置其背景色为白色 cv = tk.Canvas(root, bg='white') # 创建三个同样的 rectangle rt1 = cv.create_rectangle(10,10,110,110,width=8, tags=('r1', 'r2', 'r3')) def printRect(event): print('py3study.com') # 绑定item与事件 cv.tag_bind('r1', '<Button-1>', printRect) cv.pack() root.mainloop()
结果:
只有点击到矩形的边框时才会触发事件
添加绑定事件
使用 tag_bind 来绑定 item 与事件
代码:
import tkinter as tk root = tk.Tk() # 创建一个 Canvas,设置其背景色为白色 cv = tk.Canvas(root, bg='white') # 创建三个同样的 rectangle rt1 = cv.create_rectangle(10,10,110,110,width=8, tags=('r1', 'r2', 'r3')) def printRect(event): print('py3study.com') def printLine(event): print('py3study') # 绑定item与左键事件 cv.tag_bind('r1', '<Button-1>', printRect) # 绑定item与右键事件 cv.tag_bind('r1', '<Button-3>', printLine) cv.pack() root.mainloop()
结果:
只有点击到矩形的边框时才会触发事件,不使用 add 参数,默认就是向这个 item 添加一个处理函数,它不会替换原来的事件函数,例子结果:既响应左键又响应右键
绑定新的 item 与现有的 tags
使用 tag_bind 来绑定 item 与事件
代码:
import tkinter as tk root = tk.Tk() # 创建一个 Canvas,设置其背景色为白色 cv = tk.Canvas(root, bg='white') # 创建三个同样的 rectangle rt1 = cv.create_rectangle(10,10,110,110,width=8, tags=('r1', 'r2', 'r3')) def printRect(event): print('py3study.com') def printLine(event): print('py3study') # 绑定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(2)
下一篇: tkinter -- Canvas(4)
47743
46233
37107
34625
29227
25883
24743
19861
19414
17906
5713°
6312°
5832°
5885°
6981°
5827°
5842°
6358°
6313°
7670°