canvas教程

Tkinter教程之Canvas(1)篇

字号+ 作者:H5之家 来源:H5之家 2018-01-18 16:05 我要评论( )

'''Tkinter教程之Canvas篇(1)'''# 提供可以用来进行绘图的Container,支持基本的几何元素,使用Canvas进行绘图时,所有的操作都是通过Canvas,不是通过它的元素# 元素的表示可以使用handle或tag。'''1.第一个Canvas程序'''# -*- coding: utf-8 -*-# 指定画布

'''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的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: utf-8 -*- # 多个控件使用同一个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: 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添加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: utf-8 -*- # 使用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',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。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Html5 Canvas开发之清除一个特定区域内的Canvas、宽高技巧、使Ca

    Html5 Canvas开发之清除一个特定区域内的Canvas、宽高技巧、使Ca

    2018-01-18 17:11

  • 关于canvas的学习心得(一)

    关于canvas的学习心得(一)

    2018-01-18 13:16

  • HTML5 中用CANVAS画一个五角星

    HTML5 中用CANVAS画一个五角星

    2018-01-18 09:05

  • Unity3D学习笔记之uGUI(1):Canvas简述

    Unity3D学习笔记之uGUI(1):Canvas简述

    2018-01-18 08:04

网友点评