t
k
i
n
t
e
r
绘图之
C
a
n
v
a
s
的使用
tkinter绘图之Canvas的使用
tkinter绘图之Canvas的使用
一 创建画布
from tkinter import *
win= Tk()
win.title("创建画布")
win.geometry("600x400")
canvas= Canvas(win,width=200,height=200,bg="#AAAAAA").pack()
win.mainloop()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/720d7526c3b53a7d1be25838b63846aa.png)
二 绘制线条
from tkinter import *
win= Tk()
win.title("创建画布")
win.geometry("600x400")
canvas= Canvas(win,width=600,height=400,bg="#AAAAAA")
line1 = canvas.create_line(*(14,65,66,65),fill="red")
canvas.pack()
win.mainloop()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/21c79e39b9b2dab7654826310d65cb55.png)
三 绘制矩形
from tkinter import *
win= Tk()
win.title("创建画布")
win.geometry("600x400")
canvas= Canvas(win,width=600,height=400,bg="#AAAAAA")
line1 = canvas.create_rectangle(*(14,65,160,160),fill="red")
canvas.pack()
win.mainloop()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6eeae5b4d931e53230aa837eaa187466.png)
四 绘制椭圆‘
from tkinter import *
win= Tk()
win.title("创建画布")
win.geometry("600x400")
canvas= Canvas(win,width=600,height=400,bg="#AAAAAA")
line1 = canvas.create_oval(*(14,65,160,160),fill="red")
canvas.pack()
win.mainloop()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4693959967c7f3fe4af21476d96769a9.png)
五 绘制圆弧
from tkinter import *
win= Tk()
win.title("创建画布")
win.geometry("600x400")
canvas= Canvas(win,width=600,height=400,bg="#AAAAAA")
line1 = canvas.create_arc(*(14,65,160,160),fill="red")
canvas.pack()
win.mainloop()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d2a39e6e2d61664ac6324b1de0e2e7c5.png)
六 绘制多边形
from tkinter import *
win= Tk()
win.title("创建画布")
win.geometry("600x400")
canvas= Canvas(win,width=600,height=400,bg="#AAAAAA")
line1 = canvas.create_polygon(*(14,65,160,160,200,300),fill="red")
canvas.pack()
win.mainloop()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1baf38f2a676de869a399facbe93c50e.png)
六 绘制文字
from tkinter import *
from PIL import Image, ImageTk
win= Tk()
win.title("创建画布")
win.geometry("600x400")
canvas= Canvas(win,width=600,height=400,bg="#AAAAAA")
line1 = canvas.create_text(200,200,text="hello world!",fill="red")
canvas.pack()
win.mainloop()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1d163cc8cded0636039a2cfee407ff88.png)
七 绘制图像
import tkinter
tk = tkinter.Tk()
c = tkinter.Canvas()
image = tkinter.PhotoImage(file='test.png')
c.create_image((0, 0), image=image)
c.pack()
tk.mainloop()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c53c446386d23c45a29d920dc0081dec.png)
八 拖动图像
# move
canvas.move(rect,10,10)
from tkinter import *
from PIL import Image, ImageTk
def draw(event):
canvas.coords(rect,event.x,event.y,event.x+90,event.y+90)
def delete():
canvas.delete("all")
win = Tk()
win.title("创建画布")
win.geometry("600x400")
canvas = Canvas(win, width=600, height=400, bg="#AAAAAA")
rect = canvas.create_rectangle(10,10,100,100,fill="blue")
canvas.grid(row=0,column=0,columnspan=2)
canvas.bind("<B1-Motion>",draw)
win.mainloop()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e107e01f8725bfc8d78ba2a3a3dd3132.png)
九 用鼠标绘制图形
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a03aeb0dd7bed7e1a5bdc1e7a2f94a0f.png)
from tkinter import *
from PIL import Image, ImageTk
def draw(event):
global text1
text1 = canvas.create_oval(event.x,event.y,event.x+10,event.y+10,fill="green",outline="")
def delete():
canvas.delete("all")
generate()
win = Tk()
win.title("创建画布")
win.geometry("600x400")
canvas = Canvas(win, width=600, height=400, bg="#AAAAAA")
def generate():
canvas.pack()
canvas.bind("<B1-Motion>",draw)
Button(win,text="clear",command=delete).pack(side="bottom")
generate()
win.mainloop()
十 设计动画