你可以在Canvas 画各种图形,也可以展示图片,同时,你还可以移动他们
import tkinter as tk
window = tk.Tk()
window.title('画布')
window.geometry('300x300')
canvas = tk.Canvas(window,
bg='blue', # 设置背景色
height=200, # 设置高度
width=300) # 设置宽度
canvas.pack()
# 左上角是0,0 右下角是300, 200
line = canvas.create_line(0, 0, 300, 200)
window.mainloop()
效果图
使用create_line创建一条直线时,需要指定4个坐标,分别是x1, y1, x2, y2,(x1, y1) 是起始点坐标,(x2, y2)是结束点坐标。
在所有图形界面中,左上角的坐标值是(0, 0), 画布的高度是200, 宽度是300,那么画布的右下角就是(300, 200), 这和我们平时理解的平面直角坐标系有点不同,但你要学会适应它。
import tkinter as tk
window = tk.Tk()
window.title('画布')
window.geometry('300x300')
canvas = tk.Canvas(window,
bg='blue', # 设置背景色
height=200, # 设置高度
width=300) # 设置宽度
canvas.pack()
oval = canvas.create_oval(50, 50, 90, 90, fill='red')
rect = canvas.create_rectangle(100, 50, 150, 100)
window.mainloop()
效果图
create_rectangle方法里,前两个参数决定了长方形的左上角坐标,后两个参数决定了长方形的右下角坐标。
create_oval方法并不是只能用来画圆形,椭圆形也可以,这完全取决于传入的参数
前两个参数是左上角的坐标,后两个参数是右下角的坐标。
import tkinter as tk
window = tk.Tk()
window.title('画布')
window.geometry('300x300')
canvas = tk.Canvas(window,
bg='blue', # 设置背景色
height=200, # 设置高度
width=300) # 设置宽度
canvas.pack()
oval = canvas.create_oval(50, 50, 90, 90, fill='red')
def moveit():
canvas.move(oval, 50, 50) # x方向移动50, y方向移动50
button = tk.Button(window, text='移动圆', command=moveit)
button.pack()
window.mainloop()
move方法指定了需要移动的图形,后两个参数设置x方向和y方向上各自移动多少距离,正数向下,向右移动,负数向上,向左移动。
tkinter自己的PhotoImage只支持gif格式的图片,因此,我们需要使用PIL的ImageTk,这样,所有格式的图片都可以显示
import tkinter as tk
from PIL import ImageTk
window = tk.Tk()
window.title('画布')
window.geometry('500x500')
canvas = tk.Canvas(window,
bg='blue', # 设置背景色
height=500, # 设置高度
width=500) # 设置宽度
canvas.pack()
image_file = ImageTk.PhotoImage(file='./pic/coolpython.png')
image = canvas.create_image(10, 10, anchor='nw', image=image_file)
window.mainloop()
效果图
QQ交流群: 211426309