四川住房城乡建设部网站,企业网站首页设计欣赏,wordpress音乐主题推荐,网站开发大作业报告虽然我们能用 tkinter 设计不少东西了#xff0c;但是不少同学还是感觉对这个界面编程掌控得还不够多#xff0c;说白了#xff0c;就是我们现在还没办法随心所欲的去绘制我们想要的界面#xff0c;但是不瞒你说#xff0c;今天的这一节课将会给你的人生乃至人生观带来翻天…虽然我们能用 tkinter 设计不少东西了但是不少同学还是感觉对这个界面编程掌控得还不够多说白了就是我们现在还没办法随心所欲的去绘制我们想要的界面但是不瞒你说今天的这一节课将会给你的人生乃至人生观带来翻天覆地的变化开个玩笑哈。
我们今天讲解 Canvas 组件一个可以让你任性的组件一个可以让你随心所欲去绘制界面的组件Canvas 是一个通用的组件通常用于显示以及编辑图形你可以用它来绘制直线、三角形、矩形、多边形甚至是绘制其他的组件都可以。在 Canvas 上绘制对象你可以使用 create_xxx() 的方法xxx 表示对象类型例如线段 line矩形 rectangle文本 text 等。
举个例子
首先我们创建一个 Canvas 对象叫做 w这个对象来自于 root 设置宽度 200高度 100如果就这样运行的话得到的就是一个空白的画布背景颜色和窗口的背景颜色是一样的所以我们看不到它在哪里我们可以通过设置它的 background 设置为 white。
我们然后在它的水平方向上创建一根黄线在中间垂直方向上绘制一条红色的虚线然后在中间绘制一个蓝色的矩形。
黄色的横线起点0,50终点200,50颜色填充为 yellow。
红色的垂线起点100,0终点100,100颜色填充为 reddash 用于绘制虚线。 dash 用法 1. 绘制虚线 2. 该选项值是一个整数元组元组中的元素分别代表短线的长度和间隔 3. 例如 (3, 5) 代表 3 个像素的短线和 5 个像素的间隔 绘制矩形左下点50,25右上点150,75填充颜色为 blue import tkinter as tk root tk.Tk() w tk.Canvas(root, width 200, height 100, background white) 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) root.mainloop() 大家要注意的是我们创建的 3 个对象两条线一个矩形这些对象如果没有意外的情况它会一直保留着直到你去修改它们它们就会被覆盖例如这两条线本来都是贯穿整个 Canvas 的但是被矩形覆盖了那么中间被覆盖的位置就看不到啦。
还有一些方法提供给我们对这些对象称之为画布对象进行修改我们可以使用 coords()itemconfig() 和 move() 方法。我们来分别演示一下 import tkinter as tk root tk.Tk() w tk.Canvas(root, width 200, height 100, background white) 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, 75, 150, 25, fill blue) w.coords(line1, 0, 25, 200, 25) w.itemconfig(rect1, fill red) w.delete(line2) tk.Button(root, text 删除全部, command (lambda x all: w.delete(x))).pack() all其实是一个 tag, 就是画布所有对象 root.mainloop() 你还可以在 Canvas 上面显示文本可以使用 create_text() 方法。 import tkinter as tk root tk.Tk() w tk.Canvas(root, width 200, height 100, background white) 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 Python) root.mainloop() 我们可以看到我们设置 text 的位置为 矩形中间文本默认是居中显示的你还可以通过设置 anchor 让它 靠边。
使用 Canvas 基本上是无所不能无所不包的你要画什么图形都可以比如说画一个圆形或者椭圆形事实上圆形就是特殊的椭圆形我们来举个例子 import tkinter as tk root tk.Tk() w tk.Canvas(root, width 200, height 100, background white) 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 Python) root.mainloop() 椭圆的限制范围的条件和矩形是一模一样的然后得到的椭圆就是完美的贴合这个矩形你就明白椭圆是怎么绘制的了。事实上绘制椭圆是先给定一个限制矩形然后就用椭圆来填充这个限定矩形。事实上圆形就是特殊的椭圆只需要把这个限定矩形改成正方形即可。
然后呢你可能还想绘制一个多边形你可以使用 create_polygon() 方法现在就来带大家画一个五角星首先要画一个五角星我们需要确定 5 个角的坐标高中数学只要不是体育老师教的都知道都能够看得懂下面的原理图。 我们这里使用三角函数确定五角星5个角的位置因为我们知道它的中心到各个点的距离是一样的。我们就可以得到各个点的坐标。将这5个点连起来就是一个五角星了。绘制一个多边形我们使用 create_polygon() 方法就是依次传入每个点的坐标A-C-E-B-D
代码如下 import tkinter as tk import math root tk.Tk() w tk.Canvas(root, width 200, height 100) w.pack() center_x 100 center_y 50 r 50 points [ #左上点A center_x - int(r * math.sin(2 * math.pi / 5)), center_y - int(r * math.cos(2 * math.pi / 5)), #右上点C center_x int(r * math.sin(2 * math.pi / 5)), center_y - int(r * math.cos(2 * math.pi / 5)), #左下点E center_x - int(r * math.sin(math.pi / 5)), center_y int(r * math.cos(math.pi / 5)), #顶点B center_x, center_y - r, #右下点D center_x int(r * math.sin(math.pi / 5)), center_y int(r * math.cos(math.pi / 5)) ] w.create_polygon(points, outline green, fill yellow) #fill 默认是 black 黑色填充 root.mainloop()