python学习-->tkinter模块学习之Canvas(画布)

大家好!

最近在备考,时间耽搁了一下,更新有点慢!

 今天我想分享的是在tkinter中的Canvas方法,就跟设置窗口背景差不多,并且分享一些插入图片在窗口里面!

下面先把我们的代码的执行效果给大伙看看先!!

这一张是还没有点击过move按钮的原始图片。蓝色部分是画布的颜色,如果我不插入图片的话,这样画布就是蓝色的。因为我没有设置好图片大小,所以露出了“马脚”,有一部分蓝色露出来!

 这一张经过多次点击按钮之后矩形移动位置后的图片!!!

这一张是不插入图片后的画布样子就是这样的!!!

完整代码:

# 导入tkinter 模块
import tkinter as tk
from PIL import Image, ImageTk

# 创建一个窗口对象
window = tk.Tk()
# 设置一下窗口标题
window.title("My Window")
# 设置窗口的大小
window.geometry("720x550")
# 创建画布对象
canvas = tk.Canvas(window, bg="blue", height=440, width=430)
img = Image.open("./米奇老鼠.jpg")  # 打开图片
photo = ImageTk.PhotoImage(img)  # 使用ImageTk的PhotoImage方法
# 安置图片在画布上面
"""0,0其实代表着我们放置图片的具体;
位置anchor="nw"代表着原点位置;
image代表图片对象是谁"""
image = canvas.create_image(0, 0, anchor="nw", image=photo)
# 定义画的图形大小,由它的初始坐标和终点坐标决定大小
x1, y1, x2, y2 = 0, 0, 80, 80
# 线条,fill参数代表颜色
line = canvas.create_line(x1, y1, x2, y2, fill="red")
# 画圆
oval = canvas.create_oval(x1, y1, x2, y2, fill="yellow")
# 画半圆,start参数代表开始的角度,extent代表最后的角度,所有画出一个半圆
arc = canvas.create_arc(x1 + 30, y1 + 30, x2 + 30, y2 + 30, start=0, extent=180)
# 矩形
rect = canvas.create_rectangle(x1 + 10, y1 + 10, x2 + 10, y2 + 10)
canvas.pack()

# 定义移动函数
def moveit():
    canvas.move(rect, 0, 3)


b = tk.Button(window, text="move", command=moveit).pack()

window.mainloop()

第一步肯定是创建窗口!可以看看这里窗口

第二步创建画布对象:

# 创建画布对象
canvas = tk.Canvas(window, bg="blue", height=440, width=430)
img = Image.open("./米奇老鼠.jpg")  # 打开图片
photo = ImageTk.PhotoImage(img)  # 使用ImageTk的PhotoImage方法
# 安置图片在画布上面
"""0,0其实代表着我们放置图片的具体
位置anchor="nw"代表着原点位置;
image代表图片对象是谁"""
image = canvas.create_image(0, 0, anchor="nw", image=photo)

第三步设置要画的一些图形:

# 定义画的图形大小,由它的初始坐标和终点坐标决定大小
x1, y1, x2, y2 = 0, 0, 80, 80
# 线条,fill参数代表颜色
line = canvas.create_line(x1, y1, x2, y2, fill="red")
# 画圆
oval = canvas.create_oval(x1, y1, x2, y2, fill="yellow")
# 画半圆,start参数代表开始的角度,extent代表最后的角度,所有画出一个半圆
arc = canvas.create_arc(x1 + 30, y1 + 30, x2 + 30, y2 + 30, start=0, extent=180)
# 矩形
rect = canvas.create_rectangle(x1 + 10, y1 + 10, x2 + 10, y2 + 10)
canvas.pack()

第四是我自己增加的移动小功能:

# 定义移动函数
def moveit():
    canvas.move(rect, 0, 3)


b = tk.Button(window, text="move", command=moveit).pack()

最后记得调用window.mainloop()函数!!!

然后就完成了!!!

好了,今天的分享就这么多了,有什么不清楚或者我写错的地方,请多多指教!

私信,评论我呗!!!!!!

分享一张萌图!

猜你喜欢

转载自blog.csdn.net/hhR888888/article/details/128288904
今日推荐