Canvas(画布)组件
一个可以让你随心所欲绘制界面的组件。通常用于显示和编辑图形,可以用它来绘制直线、图形、多边形,甚至是绘制其他组件。
实例1:
1 from tkinter import * 2 root = Tk() 3 #创建canvas对象框,设置其宽度、高度与背景色 4 w = Canvas(root,width=200,height=100,background="black") 5 w.pack() 6 7 #画一条黄色的线 8 w.create_line(0,50,200,50,fill="yellow") 9 #画一条红色的竖线(虚线) 10 w.create_line(100,0,100,100,fill="red") 11 #中间画一个蓝色的矩形 12 w.create_rectangle(50,25,150,75,fill="blue") 13 14 mainloop()
实例2:
1 from tkinter import * 2 root = Tk() 3 #创建canvas对象框,设置其宽度、高度与背景色 4 w = Canvas(root,width=200,height=100,background="black") 5 w.pack() 6 7 #画一条黄色的线(参数为其x、y轴坐标) 8 line1 = w.create_line(0,50,200,50,fill="yellow") 9 #画一条红色的竖线(虚线) 10 line2 = w.create_line(100,0,100,100,fill="red") 11 #中间画一个蓝色的矩形 12 rect1 = w.create_rectangle(50,25,150,75,fill="blue") 13 14 w.coords(line1,0,25,200,25)#将line1移动到新的坐标 15 w.itemconfig(rect1,fill="red")#重新设置矩形的填充色为红色 16 w.delete(line2)#删除线2 17 18 #创建一个按钮,按下时删除所有图形 19 Button(root,text="删除全部",command=(lambda x=ALL:w.delete(x))).pack() 20 21 mainloop()
实例3:在Canvas上显示文本
1 from tkinter import * 2 root = Tk() 3 #创建canvas对象框,设置其宽度、高度与背景色 4 w = Canvas(root,width=200,height=100,background="black") 5 w.pack() 6 7 #画一条绿色的斜线(参数为其x、y轴坐标),宽度为三个像素点 8 line1 = w.create_line(0,0,200,100,fill="green",width=3) 9 #画一条绿色的斜线 10 line2 = w.create_line(200,0,0,100,fill="green",width=3) 11 #中间画两个矩形 12 rect1 = w.create_rectangle(40,20,160,80,fill="blue") 13 rect2 = w.create_rectangle(60,30,140,70,fill="yellow") 14 #在矩形正中(默认)显示文本,坐标为文本正中坐标 15 w.create_text(100,50,text="Hadley") 16 17 #创建一个按钮,按下时删除所有图形 18 Button(root,text="删除全部",command=(lambda x=ALL:w.delete(x))).pack() 19 20 mainloop()
实例4:绘制椭圆
1 from tkinter import * 2 root = Tk() 3 #创建canvas对象框,设置其宽度、高度与背景色 4 w = Canvas(root,width=200,height=100,background="white") 5 w.pack() 6 7 #绘制一个虚线的矩形 8 w.create_rectangle(40,20,160,80,dash=(4,4)) 9 #绘制椭圆,粉色填充 10 w.create_oval(40,20,160,80,fill="pink") 11 #在矩形正中(默认)显示文本,坐标为文本正中坐标 12 w.create_text(100,50,text="Hadley") 13 14 mainloop()
实例5:绘制圆形
1 from tkinter import * 2 root = Tk() 3 #创建canvas对象框,设置其宽度、高度与背景色 4 w = Canvas(root,width=200,height=100,background="white") 5 w.pack() 6 7 #绘制一个虚线的矩形 8 w.create_rectangle(40,20,160,80,dash=(4,4)) 9 #绘制圆形,粉色填充 10 #w.create_oval(40,20,160,80,fill="pink") 11 w.create_oval(70,20,130,80,fill="pink") 12 #在矩形正中(默认)显示文本,坐标为文本正中坐标 13 w.create_text(100,50,text="Hadley") 14 15 mainloop()
实例6:绘制多边形
1 from tkinter import * 2 import math as m 3 4 root = Tk() 5 w=Canvas(root,width=200,height=150,background="red") 6 w.pack() 7 center_x = 100 8 center_y = 80 9 r = 70 10 points = [ 11 #左上角A 12 center_x - int(r*m.sin(2*m.pi/5)), 13 center_y - int(r*m.cos(2*m.pi/5)), 14 #右上角C 15 center_x + int(r*m.sin(2*m.pi/5)), 16 center_y - int(r*m.cos(2*m.pi/5)), 17 #左下角E 18 center_x - int(r*m.sin(m.pi/5)), 19 center_y + int(r*m.cos(m.pi/5)), 20 #顶点D 21 center_x, 22 center_y - r, 23 #右下角B 24 center_x + int(r*m.sin(m.pi/5)), 25 center_y + int(r*m.cos(m.pi/5)), 26 ] 27 #创建多边形方法,会自动按ACEDBA的形式连线,如果构成闭环,则会自动填充 28 w.create_polygon(points,outline="green",fill="yellow") 29 30 w.create_text(100,80,text="Hadley") 31 32 mainloop()
实例7:
1 from tkinter import * 2 3 root = Tk() 4 w=Canvas(root,width=400,height=200,background="white") 5 w.pack() 6 7 def paint(event):#画小圆 8 x1,y1 = (event.x - 1),(event.y -1) 9 x2,y2 = (event.x + 1),(event.y +1) 10 w.create_oval(x1,y1,x2,y2,fill="red") 11 12 w.bind("<B1 - Motion>",paint)#画布与鼠标进行绑定 13 Label(root,text="按住鼠标左键并移动,开始绘制你的理想蓝图吧。。。").pack(side=BOTTOM) 14 15 mainloop()标签:200,center,071,Python,GUI,100,root,create,fill From: https://www.cnblogs.com/ybqjymy/p/17651431.html