Tkinter的Canvas控件

简介: Canvas控件是Tkinter界面设计的一个画图工具,也可以用它导入外部图案到界面中

创建画布

import tkinter as tk 
root=tk.Tk()               #创建界面
root.title('Canvas')     #界面命名
root.geometry('500x300')        #设置界面大小
canvas=tk.Canvas(root)          #创建画布
canvas.pack()                         #放置画布
root.mainloop()                       #放置界面

Canvas画图

1. 矩形

canvas.create_rectangle(x1,y1,x2,y2,fill,outline) 

注:在左上角为(x1,y1),右下角为(x2,y2)的矩形中画一个矩形,fill为填充的颜色,outline为边框颜色

2. 椭圆

canvas.create_oval(x1,y1,x2,y2,fill,outline) 

注:在左上角为(x1,y1),右下角为(x2,y2)的矩形中画一个椭圆,fill为填充的颜色,

3. 直线

canvas.create_line(x1,y1,x2,y2,fill) 

注:从(x1,y1)到(x2,y2)画一条直线,fill为直线颜色

4. 扇形

canvas.create_arc(x1,y1,x2,y2,fill,outline,start,extent) 

注:在左上角为(x1,y1),右下角为(x2,y2)的矩形中画一个扇形,start为开始角度,extent为结束角度

程序设计

在root界面中画一条直线,一个矩形,一个圆形和一个扇形,并且单机按钮可以移动图形

import tkinter as tk
root=tk.Tk()
root.title('Canvas')
width=500
height=300
screenwidth=root.winfo_screenwidth()
screenheight=root.winfo_screenheight()
x=(screenwidth-width)//2
y=(screenheight-height)//2
root.geometry('%dx%d+%d+%d'%(width,height,x,y))
canvas=tk.Canvas(root,width=width,height=height,bg='yellow')
line=canvas.create_line(50,50,100,100,fill='red')
oval=canvas.create_oval(150,50,200,100,outline='black',fill='blue')
rectangle=canvas.create_rectangle(250,50,300,100,outline='black',fill='pink')
arc=canvas.create_arc(350,50,400,150,start=0,extent=180,outline='black',fill='green')
def move():
    canvas.move(line,0,10)
    canvas.move(oval,0,10)
    canvas.move(rectangle,0,10)
    canvas.move(arc,0,10)
canvas.pack()
tk.Button(root,text='Move',width=5,bg='white',command=move).place(x=225,y=200)
root.mainloop() 

运行结果

1.png

Canvas导入图片

tkinter中的Canvas只能直接导入动图,即gif格式的图片,其他图片需要使用ImageTk库的PhotoImage()函数进行导入

1. 导入gif图片

canvas.create_image() 

注:括号中填入图片的地址即可

2. 导入jpg图片

首先需要打开jpg图片并命名为img

img=Image.open('d:\\图片\\1.jpg')

然后我们把它缩放一下与画板大小一致

img.thumbnail((width,height))

将jpg格式的图片转换成tkinter可识别的图像

photo=ImageTk.PhotoImage(img)

将图片导入即可

canvas.create_image(0,0,image=photo,anchor='nw')

完整程序

import tkinter as tk
from PIL import Image,ImageTk
root=tk.Tk()
root.title('Canvas')
width=500
height=300
screenwidth=root.winfo_screenwidth()
screenheight=root.winfo_screenheight()
x=(screenwidth-width)//2
y=(screenheight-height)//2
root.geometry('%dx%d+%d+%d'%(width,height,x,y))
canvas=tk.Canvas(root,width=width,height=height)
img=Image.open('d:\\图片\\1.jpg')
img.thumbnail((width,height))
photo=ImageTk.PhotoImage(img)
canvas.create_image(0,0,image=photo,anchor='nw')
canvas.pack()
root.mainloop() 

运行结果

2.png

目录
相关文章
|
7月前
|
Python
tkinter之Scrollbar滚动条
tkinter之Scrollbar滚动条
95 1
|
7月前
|
Python 容器
Tkinter:窗口控件配置
Tkinter:窗口控件配置
|
7月前
|
Python
tkinter之grid布局
tkinter之grid布局
52 1
|
4月前
|
前端开发 C# Windows
WPF基础:在Canvas上绘制图形
WPF基础:在Canvas上绘制图形
149 0
|
7月前
|
前端开发 JavaScript
验证码(原生js加canvas绘图)
验证码(原生js加canvas绘图)
43 0
|
7月前
|
Python
tkinter滚动条
tkinter滚动条
42 1
|
7月前
|
Python
tkinter之Radiobutton
tkinter之Radiobutton
52 1
|
7月前
|
Python
tkinter之button添加背景图片
tkinter之button添加背景图片
160 1
|
7月前
|
Python
tkinter之鼠标事件
tkinter之鼠标事件
104 0
|
XML 移动开发 前端开发
Canvas 和 SVG 绘图的区别
Canvas 和 SVG 绘图的区别
102 0