Tkinter中用于绘图的控件是Canvas控件,该控件类似于之前学过的HTML5中的Canvas,后者是采用JavaScript语句绘图,而Tkinter中则直接用Python语句绘图。Tkinter中的Canvas控件和HTML5中的Canvas支持的绘图类型都差不多,包括绘制直线、圆形、弧形、矩形、字符串、图片等,但是两者的创建方式、绘图函数使用方式、绘图参数设置方式都不太一样。本文基于参考文献,学习Tkinter模块的Canvas控件的创建方式和基本图形的绘制方法。
调用tkinter.Canvas创建Canvas控件( tkinter.Canvas ( master, option=value, … )),同时指定其属性,Canvas的全部属性说明详见参考文献1-2,本文仅列出最常用的几个属性。
属性名 | 说明 |
---|---|
background(bg) | 设置canvas背景色 |
width | 设置canvas控件宽度 |
height | 设置canvas控件高度 |
state | 设置canvas控件状态,可取值为normal 或disabled,默认为normal |
relief | 设置canvas边框样式,可取值为FLAT、SUNKEN、RAISED、GROOVE、RIDGE,默认为 FLAT |
borderwidth(bd) | 设置canvas控件的边框宽度 |
创建包含空白Canvas控件的窗口,演示Canvas的创建方式,代码及运行效果如下:
# coding=gbk
import tkinter as tk
window=tk.Tk()
window.title('Canvas测试')
window.geometry('400x300')
tk.Label(window,text='Canvas示例').grid(row=0,column=0)
cv=tk.Canvas(window,bg="lightblue",width =200, height = 200)
cv.grid(row=1,column=1)
window.mainloop()
下表列出Canvas中的常用基本绘图函数(来自参考文献1),详细的函数及函数参数说明请见参考文献1-4:
函数名 | 说明 | 函数形式 |
---|---|---|
create_line | 绘制一条或者多条线段 | create_line(x0, y0, x1, y1, … , xn, yn, options) |
create_oval | 绘制圆形或椭圆形 | create_oval(x0, y0, x1, y1, options) |
create_polygon | 绘制多边形 | create_polygon(x0, y0, x1, y1, … , xn, yn, options) |
create_rectangle | 绘制矩形 | create_rectangle(x0, y0, x1, y1, options) |
create_text | 绘制文本 | create_text(x0, y0, text, options) |
create_arc | 绘制弧形 | create_arc(coord, start, extent, fill) |
结合参考文献,对上述函数的基本用法进行验证,验证程序及运行效果如下所示:
# coding=gbk
import tkinter as tk
window=tk.Tk()
window.title('Canvas测试')
window.geometry('400x300')
tk.Label(window,text='Canvas示例').grid(row=0,column=0)
cv=tk.Canvas(window,bg="lightblue",width =300, height = 250)
cv.grid(row=1,column=1)
cv.create_text(20,20,text ='绘制线条示例:',font =('宋体',8,'bold'),anchor = tk.W)
cv.create_line(100,20,140,20)
cv.create_line(160,20,180,30,200,20)
cv.create_polygon(220,15,250,20,270,30,290,15,fill="",outline="blue")
cv.create_text(20,70,text ='绘制圆形示例:',font =('宋体',8,'bold'),anchor = tk.W)
cv.create_oval(120,50,160,90,fill ='',outline = 'red',width=2)
cv.create_oval(200,50,250,80,fill ='',outline = 'red',width=2)
cv.create_text(20,140,text ='绘制矩形示例:',font =('宋体',8,'bold'),anchor = tk.W)
cv.create_rectangle(120,120,160,160,fill ='',outline = 'red',width=2)
cv.create_rectangle(200,120,250,150,fill ='',outline = 'red',width=2)
cv.create_text(20,210,text ='绘制弧形示例:',font =('宋体',8,'bold'),anchor = tk.W)
cv.create_arc(120,190,160,230,start = 0, extent = 270, fill = '',outline ='orange',width = 2)
cv.create_arc(200,190,250,220,start = 120, extent = 210, fill = '',outline ='orange',width = 2)
window.mainloop()
Canvas控件的用法和参数设置都比较复杂,本文仅是对着参考文献学习了Canvas最基本的用法,后续还会继续深入学习Canvas控件的使用方法。
参考文献:
[1]http://c.biancheng.net/tkinter/canvas-widget.html
[2]https://www.runoob.com/python/python-tk-canvas.html
[3]https://www.dandelioncloud.cn/article/details/1510269350337654786
[4]https://docs.python.org/3.10/library/tkinter.html
[5]https://blog.csdn.net/weixin_43302112/article/details/121503346