【tkinter系列 第九课 Canvas窗口部件 】

2020-03-12 15:22:57 浏览数 (1)

前言

python中通常我们写程序,显示结果和操作都是在终端区,如果要想实现一个有显示界面的程序那该怎样实现呢?python中有好几个库都可以实现,这个系列我们一起来学习如何使用python自带的tkinter库来实现。

本节课将要学习Canvas窗口部件,Canvas是画布的意思,那什么时候该用Canvas部件呢?通常用于显示和编辑图形和其他绘图。这个小部件的另一个常见用途是实现各种自定义小部件。例如,您可以通过在画布上绘制直线、椭圆、多边形、矩形和显示图片。

绘制图形

代码:

代码语言:javascript复制
from tkinter import *

root = Tk()
root.geometry("400x200")

w = Canvas(root, width=200, height=100,bg="yellow")
w.pack()
# 绘制直线 起点 和 终点
w.create_line(0, 0, 200, 100)
# dash绘制虚线,前面一个数字表示长度,后面表示间隔
w.create_line(0, 100, 200, 0, fill="red", dash=(5,5))
# 绘制矩形 左上角 右下角坐标 填充颜色
w.create_rectangle(50, 25, 150, 75, fill="blue")

mainloop()

效果:

解释:

在画布中绘制内容,使用 create 方法添加新项。createline() 绘制线段 createrectangle() 绘制矩形

显示图片

代码:

代码语言:javascript复制
from tkinter import *

root = Tk()
root.geometry("400x200")

w = Canvas(root, width=200, height=100,bg="yellow")
w.pack()
# 使用PhotoImage方法加载图片
photo = PhotoImage(file="test.png")

# 显示图片

前面两个数字表示图片显示位置 锚点默认图片中心 anchor参数可以更改锚点
w.create_image(100,50,image=photo)
# w.create_image(100,0,anchor="n",image=photo)
# w.create_image(0,0,anchor="nw",image=photo)
mainloop()

效果:

默认 anchor="center"。

anchor="n",设置定边中间为锚点。

anchor="nw" ,设置左上角为锚点。

拓展:

除了Canvas可以显示图片,按钮和标签控件同样也是可以显示图片的。

代码:

代码语言:javascript复制
from tkinter import *

root = Tk()
root.geometry("400x200")

# 使用PhotoImage方法加载图片
photo = PhotoImage(file="test.png")

l = Label(root, image=photo,  width=200, bg="red")
l.pack()

button = Button(root,image=photo)
button.pack()

mainloop()

效果:

参考:

http://effbot.org/tkinterbook/canvas.html

0 人点赞