Tkinter教程之Canvas(1)篇

来源:互联网 发布:广州轰趴馆 知乎 编辑:程序博客网 时间:2024/06/15 07:37
'''Tkinter教程之Canvas篇(1)'''# 提供可以用来进行绘图的Container,支持基本的几何元素,使用Canvas进行绘图时,所有的操作都是通过Canvas,不是通过它的元素# 元素的表示可以使用handle或tag。'''1.第一个Canvas程序'''# -*- coding: utf-8 -*-# 指定画布的颜色为白色from tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色cv = Canvas(root, bg='white')cv.pack()root.mainloop()# 为明显起见,将背景色设置为白色,用以区别root

'''2.创建一个item'''# -*- coding: utf-8 -*-# 创建一个矩形,指定画布的颜色为白色from tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色cv = Canvas(root, bg='white')# 创建一个矩形,坐标为(10,10,110,110)cv.create_rectangle(10, 10, 110, 110)'''3.指定item的填充色'''# 指定矩形的填充色为红色cv.create_rectangle(120, 10, 220, 110, fill='red')'''4.指定item的边框颜色'''# 指定矩形的边框颜色为红色cv.create_rectangle(10,120,110,220,outline = 'red')'''5.指定边框的宽度'''# 指定矩形的边框颜色为红色,设置线宽为5,注意与Canvas的width是不同的。cv.create_rectangle(120,120,220,220,outline = 'red',width = 5)cv.pack()root.mainloop()# 为明显起见,将背景色设置为白色,用以区别root

'''6.画虚线'''# -*- coding: utf-8 -*-# 指定画布的背景色为白色# 使用属性dash,这个值只能为奇数from tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色# 指定矩形的边框颜色为红色,画虚线cv = Canvas(root, bg='white')cv.create_rectangle(10, 10, 110, 110,                    outline='red',                    dash=10,                    fill='green')'''7.使用画刷填充'''cv.create_rectangle(120, 10, 220, 110,                    outline = 'red',                    stipple = 'gray12',                    fill = 'green')cv.pack()root.mainloop()

'''8.修改item的坐标'''# -*- coding: utf-8 -*-# 指定画布的背景色为白色# 使用Canvas的方法来重新设置item的坐标from tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色cv = Canvas(root, bg='white')rt = cv.create_rectangle(10, 10, 110, 110,                         outline='red',                         stipple='gray12',                         fill='green')cv.pack()# 重新设置rt的坐标(相当于移动一个item)cv.coords(rt, (40, 40, 80, 80))root.mainloop()# 动态修改item的坐标

'''9.创建item的tags'''# -*- coding: utf-8 -*-# 使用属性tags设置item的tag# 使用Canvas的方法gettags获取指定item的tagsfrom 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: utf-8 -*-# 多个控件使用同一个tagfrom 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: utf-8 -*-# 得到了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'):    print(item)    cv.itemconfig(item, outline='blue')root.mainloop()# 动态修改与tag('r3')绑定的item边框颜色

'''13.向其它item添加tag'''# -*- coding: utf-8 -*-# 使用addtag_来向上一个或下一个item添加tagfrom tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色cv = Canvas(root, bg='white')# 创建三个rectanglert1 = 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添加r4cv.addtag_above('r4', rt2)# 向rt2的下一个item添加r5cv.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: utf-8 -*-# 使用find_xxx查找上一个或下一个itemfrom tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色cv = Canvas(root, bg='white')# 创建三个rectanglert1 = 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',width='5')# 查找rt2的下一个item,并将其边框颜色设置为绿色cv.itemconfig(cv.find_below(rt2), outline='green',width='2')cv.pack()root.mainloop()# Canvas使用了stack的技术,新创建的item总是位于前一个创建的item之上,故调用above时,# 它会查找rt2上面的item为rt3,故rt3中边框颜色设置为红色,同样add_below会查找下面的item。

0 0
原创粉丝点击