0
点赞
收藏
分享

微信扫一扫

Tkinter的Canvas组件

小黑Neo 2023-03-13 阅读 48


一、简介

Canvas组件,是一个可以绘制界面的组件,

Canvas组件是通用的组件,通常用来显示或编辑图形,可以用来绘制直线、圆形、多边形,甚至是绘制其他组件

二、用Canvas绘制简单的直线与矩形

from tkinter import *
root = Tk()
w = Canvas(root, width=200, height=100)
w.pack()w.create_line(0, 50, 200, 50, fill="yellow")
w.create_line(100, 0, 100, 100, fill="red", dash=(4, 4))
w.create_rectangle(50, 25, 150, 75, fill="blue")mainloop()

运行:

Tkinter的Canvas组件_tkinter

三、删除Canvas上的对象

添加到Canvas上对象会一直保留着,可以使用coords()、itemconfig()和move()方法来移动画布上的对象,或者使用delete()方法来删除

 

from tkinter import *
root = Tk()
w = Canvas(root, width=200, height=100)
w.pack()line1 = w.create_line(0, 50, 200, 50, fill="yellow")
line2 = w.create_line(100, 0, 100, 100, fill="red", dash=(4, 4))
rect1 = w.create_rectangle(50, 25, 150, 75, fill="blue")w.coords(line1, 0, 25, 200, 25)
w.itemconfig(rect1, fill="red")
w.delete(line2)Button(root, text="删除全部", command=(lambda x=ALL:w.delete(x))).pack()
mainloop()

运行:

Tkinter的Canvas组件_tkinter_02

四、在Canvas上显示文本

from tkinter import *
root = Tk()
w = Canvas(root, width=200, height=100)
w.pack()w.create_line(0, 0, 200, 100, fill="green", width=3)
w.create_line(200, 0, 0, 100, fill="green", width=3)
w.create_rectangle(40, 20, 160, 80, fill="green")
w.create_rectangle(65, 35, 135, 65, fill="yellow")w.create_text(100, 50, text="badao")
mainloop()

运行:

Tkinter的Canvas组件_tkinter_03

五、Canvas绘制椭圆与圆形

使用create_oval()方法绘制椭圆形或圆形,参数是指定一个限定矩形,Tkinter会自动在这个矩形内绘制一个椭圆

from tkinter import *
root = Tk()
w = Canvas(root, width=200, height=100)
w.pack()w.create_rectangle(40, 20, 160, 80, dash=(4, 4))
w.create_oval(40, 20, 160, 80, fill="pink")
w.create_text(100, 50, text="badao")mainloop()

运行:

Tkinter的Canvas组件_tkinter_04

绘制圆形,就是修改坐标参数,将设定矩形设置为正方形

w.create_oval(70, 20, 130, 80, fill="pink")

Tkinter的Canvas组件_tkinter_05

六、Canvas绘制五角星

想绘制多边形,可以使用create_polygon()方法,具体怎样确定五个角的坐标,可以自行研究,比较复杂,在这只给出现成的源码

from tkinter import *
import math as mroot = Tk()
w = Canvas(root, width=200, height=100, background="red")
w.pack()center_x = 100
center_y = 50
r = 50points = [
# 左上点
center_x - int(r * m.sin(2 * m.pi / 5)),
center_y - int(r * m.cos(2 * m.pi / 5)),
# 右上点
center_x + int(r * m.sin(2 * m.pi / 5)),
center_y - int(r * m.cos(2 * m.pi / 5)),
# 左下点
center_x - int(r * m.sin(m.pi / 5)),
center_y + int(r * m.cos(m.pi / 5)),
# 顶点
center_x,
center_y - r,
# 右下点
center_x + int(r * m.sin(m.pi / 5)),
center_y + int(r * m.cos(m.pi / 5))
]w.create_polygon(points, outline="green", fill="yellow")
mainloop()

运行:

Tkinter的Canvas组件_tkinter_06

 

 

 

举报

相关推荐

0 条评论