视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Tkinter教程之Canvas篇(2)
2020-11-27 15:13:23 责编:小采
文档


'''Tkinter教程之Canvas篇(2)'''


'''9.创建item的tags'''


# -*- coding: cp936 -*-


# 使用属性tags设置item的tag


# 使用Canvas的方法gettags获取指定item的tags

from Tkinter import *
root = Tk()

# 创建一个Canvas,设置其背景色为白色

cv = Canvas(root,bg = 'white')

# 使用tags指定一个tag('r1')

rt = cv.create_rectangle(10,10,110,110,
tags = 'r1'
)
cv.pack()
print cv.gettags(rt)

# 使用tags属性指定多个tags,即重新设置tags的属性

cv.itemconfig(rt,tags = ('r2','r3','r4'))
print cv.gettags(rt)
root.mainloop()


# 动态修改item的坐标


'''10.多个item使用同一个tag'''


# -*- coding: cp936 -*-


# 多个控件使用同一个tag

from Tkinter import *
root = Tk()

# 创建一个Canvas,设置其背景色为白色


cv = Canvas(root,bg = 'white')


# 使用tags指定一个tag('r1')

rt = cv.create_rectangle(10,10,110,110,
tags = ('r1','r2','r3')
)
cv.pack()
cv.create_rectangle(20,20,80,80,tags = 'r3')
print cv.find_withtag('r3')
root.mainloop()

# 动态修改item的坐标


#fid_withtag返回所有与tag绑定的item。


'''11.通过tag来访问item'''


# -*- coding: cp936 -*-


# 得到了tag值也就得到了这个item,可以对这个item进行相关的设置。

from Tkinter import *
root = Tk()


# 创建一个Canvas,设置其背景色为白色


cv = Canvas(root,bg = 'white')


# 使用tags指定一个tag('r1')

rt = cv.create_rectangle(10,10,110,110,
tags = ('r1','r2','r3')
)
cv.pack()
cv.create_rectangle(20,20,80,80,tags = 'r3')


# 将所有与tag('r3')绑定的item边框颜色设置为蓝色

for item in cv.find_withtag('r3'):
cv.itemconfig(item,outline = 'blue')
root.mainloop()

# 动态修改与tag('r3')绑定的item边框颜色


'''13.向其它item添加tag'''


# -*- coding: cp936 -*-


# 使用addtag_来向上一个或下一个item添加tag

from Tkinter import *
root = Tk()


# 创建一个Canvas,设置其背景色为白色

cv = Canvas(root,bg = 'white')

# 创建三个rectangle

rt1 = cv.create_rectangle(
10,10,110,110,
tags = ('r1','r2','r3'))
rt2 = cv.create_rectangle(
20,20,80,80,
tags = ('s1','s2','s3'))
rt3 = cv.create_rectangle(
30,30,70,70,
tags = ('y1','y2','y3'))


# 向rt2的上一个item添加r4

cv.addtag_above('r4',rt2)

# 向rt2的下一个item添加r5

cv.addtag_below('r5',rt2)
for item in [rt1,rt2,rt3]:
print cv.gettags(item)
cv.pack()
root.mainloop()


#Canvas使用了stack的技术,新创建的item总是位于前一个创建的item之上,故调用above时,它会查找rt2上面的item为rt3,故rt3中添加了tag('r4'),同样add_below会查找下面的item。


'''14.返回其它item'''


# -*- coding: cp936 -*-


# 使用find_xxx查找上一个或下一个item

from Tkinter import *
root = Tk()


# 创建一个Canvas,设置其背景色为白色

cv = Canvas(root,bg = 'white')

# 创建三个rectangle

rt1 = cv.create_rectangle(
10,10,110,110,
tags = ('r1','r2','r3'))
rt2 = cv.create_rectangle(
20,20,80,80,
tags = ('s1','s2','s3'))
rt3 = cv.create_rectangle(
30,30,70,70,
tags = ('y1','y2','y3'))


# 查找rt2的上一个item,并将其边框颜色设置为红色

cv.itemconfig(cv.find_above(rt2),outline = 'red')

# 查找rt2的下一个item,并将其边框颜色设置为绿色

cv.itemconfig(cv.find_below(rt2),outline = 'green')
cv.pack()
root.mainloop()


#Canvas使用了stack的技术,新创建的item总是位于前一个创建的item之上,故调用above时,它会查找rt2上面的item为rt3,故rt3中边框颜色设置为红色,同样add_below会查找下面的item。

下载本文
显示全文
专题