canvas教程

python学习笔记14--用Tkinter实现GUI编程(2)

字号+ 作者:H5之家 来源:H5之家 2017-08-15 17:00 我要评论( )

Canvas类于一个画板,可以在上面绘制各种图形和进行图形编辑,Canvas的坐标系不同于turtle的坐标系,它是以canvas的左上角点为原点(0,0),以右方和下方为x轴正轴和y轴正轴,并以像素为单位;下面介绍几个常用的绘制

Canvas类似于一个画板,可以在上面绘制各种图形和进行图形编辑,Canvas的坐标系不同于turtle的坐标系,它是以canvas的左上角点为原点(0,0),以右方和下方为x轴正轴和y轴正轴,并以像素为单位;下面介绍几个常用的绘制函数:

create_rectange(x1,y1,x2,y2):绘制一个矩形,(x1,y1)为矩形左上角点,(x2,y2)为矩形右下角点;

create_oval(x1,y1,x2,y2):绘制一个椭圆,(x1,y1)和(x2,y2)分别为椭圆外接矩形的左上角点和右下角点;

create_arc(x1,y1,x2,y2,start,extent):绘制一个弧形, (x1,y1)和(x2,y2)分别为椭圆或圆外接矩形的左上角点和右下角点,start是弧形角度开始点,extent是弧形角度;

create_polygon(x1,y1,x2,y2,x3,y3):绘制一个多边形,(xi,yi)分别为各顶点坐标;

create_line(x1,y1,x2,y2):绘制线条,(x1,y1)和(x2,y2)分别为起始点和结束点;

create_text(x,y,text):绘制字符串在以(x,y)为中心的位置。

下面举个小例子说明用法:

window = Tk() canvas = Canvas(window,width=200,height=100,bg="white") canvas.pack() canvas.create_rectangle(10,10,190,90,tags="rect") #canvas.create_oval(10,10,190,90,fill="red",tags="oval") #canvas.create_arc(10,10,190,90,start=0,extent=90,width=8,fill="red",tags="arc") #canvas.create_polygon(10,10,190,90,30,50,tags="poly") #canvas.create_line(10,90,190,10,width=9,arrow="last",activefill="blue",tags="line") #canvas.create_text(60,40,text="string",font="Times 10 bold underline",tags="string") #canvas.delete("rect","oval","arc","poly","line","string") window.mainloop() 对其中出现的一些字段做简要说明:create_rectangle()中的tags表示的是这个图形在canvas中的标识,在后面的canvas.delete()(删除canvas中的图形)中也使用到;create_oval()中的fill表示的是填充颜色;create_arc()中的width表示的是图形线段的宽度;create_line中的arrow="last"表示在线段末尾加箭头,active fill表示若鼠标移动到这条线段上时,线段的颜色会变成蓝色;create_text()中的font是字体。


4. Geometry Managers

Tkinter利用Geometry Managers在容器中布置控件,有三种Geometry managers:grid,pack,place。其中前两种在之前使用过。每一种管理方式都不同,所以通常不在一个容器中混合使用这三种方式,而是利用Frame子容器来分开使用geometry managers。

1)grid

grid的通常表示方式是:widgets.grid(row=a, column=b, rowspan=c, columnspan=d, padx=e, pady=f, sticky=E)。其中前两个参数已经用过,rowspan和columnspan表示控件跨几行几列;padx和pady表示与容器的水平边线和垂直边线间隔多少像素值;sticky表示在容器内容的什么方位,有E,S,N,W,SE,SW,NW,NE几种。具体可测试。

2)pack

上面的例子,默认pack的方式是一行一行进行的。pack中可以用side来设置放置的方式,有LEFT, RIGHT, TOP, BOTTOM,默认的方式就是TOP,如widget.pack(side=LEFT)。

3)place

place可以在任何位置放置控件,用法为widgets.place(x=a,y=b),a,b分别为坐标。值得注意的是,place manager并不兼容所有的计算机,如果windows的分辨率为1024*768,那么place正好可用,若分辨率过高或过低,都会出现显示问题。


5. 使用图片

可以用photo = PhotoImage(file = imagefilename)来加载图片。然后在控件的创建中使用图片。如

testImage = PhotoImage(file = "testimage.gif") Label(window,image=testImage) canvas.create_image(90,50,image=testImage) Button(window,image=testImage)
这一节暂时学习这么多,后面的Menu, Mouse, Key Events, Scrollbars, Animation, Dialog等后续再学习。









 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Unity3D之UGUI学习EventSystem

    Unity3D之UGUI学习EventSystem

    2017-07-16 08:02

  • 微信开发者平台,微信开发者社区,微信小程序开发者社区

    微信开发者平台,微信开发者社区,微信小程序开发者社区

    2016-12-24 12:00

  • 【干货】Python爬虫/文本处理/科学计算/机器学习/数据挖掘兵器谱

    【干货】Python爬虫/文本处理/科学计算/机器学习/数据挖掘兵器谱

    2016-04-19 10:00

  • 9秒课堂专注于游戏开发,微信开发,前端开发,后端开发的在线免

    9秒课堂专注于游戏开发,微信开发,前端开发,后端开发的在线免

    2016-01-20 09:01

网友点评