前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tkinter -- Canvas(3)

tkinter -- Canvas(3)

作者头像
py3study
发布2018-08-03 10:27:22
2870
发布2018-08-03 10:27:22
举报
文章被收录于专栏:python3python3

移动 item

move 指定 x,y 在偏移量

代码:

代码语言:javascript
复制
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()

结果:

blob.png
blob.png

move 可以指定 x,y 在相对偏移量,可以为负值

删除 item

delete 删除给定的 item

代码:

代码语言:javascript
复制
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()

结果:

blob.png
blob.png

两种方法删除 item(id/tag)

缩放 item

scale 缩放 item,计算公式:(coords - offset)*scale + offset

代码:

代码语言:javascript
复制
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()

结果;

blob.png
blob.png

scale 的参数为(self,xoffset,yoffset,xscale,yscale)

绑定 item 与 event

使用 tag_bind 来绑定 item 与事件

代码:

代码语言:javascript
复制
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()

结果:

blob.png
blob.png

只有点击到矩形的边框时才会触发事件

添加绑定事件

使用 tag_bind 来绑定 item 与事件

代码:

代码语言:javascript
复制
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()

结果:

blob.png
blob.png

只有点击到矩形的边框时才会触发事件,不使用 add 参数,默认就是向这个 item 添加一个处理函数,它不会替换原来的事件函数,例子结果:既响应左键又响应右键

绑定新的 item 与现有的 tags

使用 tag_bind 来绑定 item 与事件

代码:

代码语言:javascript
复制
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()

结果:

blob.png
blob.png

将事件与 tag('r1')绑定后,创建新的 item 并指定已绑定事件的 tag,新创建的 item 同样也与事件绑定

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档