Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。tkinter 模块 ("Tk 接口") 是 Python 的标准 Tk GUI 工具包的接口。接下来通过本文给大家介绍 Python 中的 tkinter 模块作图教程,需要的朋友参考下
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
python 简述:
Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。自从 20 世纪 90 年代初 Python 语言诞生至今,它逐渐被广泛应用于处理系统管理任务和 web 编程。Python[1] 已经成为最受欢迎的程序设计语言之一。2011 年 1 月,它被 TIOBE 编程语言排行榜评为 2010 年度语言。自从 2004 年以后,python 的使用率是呈线性增长。
tkinter 模块介绍
tkinter 模块 ("Tk 接口") 是 Python 的标准 Tk GUI 工具包的接口. Tk 和 Tkinter 可以在大多数的 Unix 平台下使用, 同样可以应用在 Windows 和 Macintosh 系统里.,Tk8.0 的后续版本可以实现本地窗口风格, 并良好地运行在绝大多数平台中。
由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 还是能应付自如。
八、显示文字
用 create_text 在画布上写字。这个函数只需要两个坐标(文字 x 和 y 的位置),还有一个具名参数来接受要显示的文字。例如:
- >>> from tkinter import*>>> tk = Tk()>>> canvas = Canvas(tk,width=400,height=400)>>> canvas.pack()>>> canvas.create_text(150,100,text='Happy birthday to you')
create_text 函数还有几个很有用的参数,比方说字体颜色等。在下面的代码中,我们调用 create_text 函数时使用了坐标(130,120),还有要显示的文字,以及红色的填充色:
- canvas.create_text(130,120,text='Happy birthday to you!',fill='red')
我们还可以指定字体,方法是给出一个包含字体名和字体大小的元组。例如大小为 20 的 Times 字体就是('Times',20):
- >>> canvas.create_text(150,150,text='Happy birthday',font=('Times',15))>>> canvas.create_text(200,200,text='Happy birthday',font=('Courier',22))>>> canvas.create_text(220,300,text='Happy birthday',font=('Couried',30))
九、显示图片
要用 tkinter 在画布上显示图片,首先要装入图片,然后使用 canvas 对象上的 create_image 函数。
这是我存在 E 盘上的一张图片:
我们可以这样来显示 one.gif 图片:
- >>> from tkinter import*>>> tk = Tk()>>> canvas = Canvas(tk,width=400,height=400)>>> canvas.pack()>>> my_image = PhotoImage(file='E:\\FFOutput\\one.gif')>>> canvas.create_image(0,0,anchor = NW,image = my_image) >>> canvas.create_image(50,50,anchor = NW,image = my_image)
在第五行中,把图片装入到变量 my_image 中。坐标 (0,0)/(50,50) 是我们要显示图片的位置, anchor=NW 让函数使用左上角 (northwest 西北方) 作为画图的起始点,最后一个具名参数 image 指向装入的图片。
注:用 tkinter 只能装入 GIF 图片,也就是扩展名是. gif 的图片文件。
想要显示其他类型的图片,如 PNG 和 JPG,需要用到其他的模块,比如 Python 图像库。
十、创建基本的动画
创建一个填了色的三角形,让它在屏幕上横向移动:
- import timefrom tkinter import * tk = Tk() canvas = Canvas(tk, width = 400, height = 200) canvas.pack() canvas.create_polygon(10, 10, 10, 60, 50, 35)##创建三角形
- for x in range(0, 60) : canvas.move(1, 5, 0)##把任意画好的对象移动到把x和y坐标增加给定值的位置tk.update()##强制tkinter更新屏幕(重画)time.sleep(0.05)##让程序休息二十分之一秒(0.05秒),然后再继续
三角形横向移动
延伸一下,如果想让三角形沿对角线在屏幕上移动,我们可以第 8 行为:
- import timefrom tkinter import * tk = Tk() canvas = Canvas(tk, width = 400, height = 400) canvas.pack() canvas.create_polygon(10, 10, 10, 60, 50, 35)##创建三角形
- for x in range(0, 60) : canvas.move(1, 5, 5)##把任意画好的对象移动到把x和y坐标增加给定值的位置tk.update()##强制tkinter更新屏幕(重画)time.sleep(0.05)##让程序休息二十分之一秒(0.05秒),然后再继续
三角形沿对角线移动
如果要让三角形在屏幕上沿对角线回到开始的位置,要用 - 5,-5(在结尾处加上这段代码)
- import timefrom tkinter import * tk = Tk() canvas = Canvas(tk, width = 400, height = 400) canvas.pack() canvas.create_polygon(10, 10, 10, 60, 50, 35)##创建三角形
- for x in range(0, 60) : canvas.move(1, 5, 5)##把任意画好的对象移动到把x和y坐标增加给定值的位置tk.update()##强制tkinter更新屏幕(重画)time.sleep(0.05)##让程序休息二十分之一秒(0.05秒),然后再继续
- for x in range(0, 60) : canvas.move(1, -5, -5) tk.update() time.sleep(0.05)
对角线运动并回到初始位置
十一、让对象对操作有反应
我们可以用 "消息绑定" 来让三角形在有人按下某键时有反应。
要开始处理事件,我们首先要创建一个函数。当我们告诉 tkinter 将某个特定函数绑到(或关联到)某个特定事件上时就完成了绑定。
换句话说,tkinter 会自动调用这个函数来处理事件。
例如,要让三角形在按下回车键时移动,我们可以定义这个函数:
- def movetriangle(event): canvas.move(1,5,0)
这个函数只接受一个参数(event),tkinter 用它来给函数传递关于事件的信息。现在我们用画布 canvas 上的 bind_all 函数来告诉 tkinter 当特定事件发生时应该调用这个函数。代码如下:
- from tkinter import*tk = Tk()canvas = Canvas(tk,width=400,height=400)canvas.pack()canvas.create_polygon(10,10,10,60,50,35)def movetriangle(event): canvas.move(1,5,0)canvas.bind_all('<KeyPress-Return>',movetringle) ##让tkinter监视KeyPress事件,当该事件发生时调用movetriangle函数
那么我们如何根据按键的不同而改变三角形的方向呢?比如用方向键。
我们可以尝试改下 movetriangle 函数:
- def movetriangle(event) : if event.keysym == 'up': canvas.move(1, 0, -3)##第一个参数使画布上所画的形状的ID数字,第二个是对x(水平方向)坐标增加的值,第三个是对y(垂直方向)坐标增加的值elif event.keysym == 'down': canvas.move(1, 0, 3) elif event.keysym == 'left': canvas.move(1, -3, 0)
- else canvas.move(1, 3, 0)
最后代码汇总在一起为:
- from tkinter import * tk = Tk() canvas = Canvas(tk, width = 400, height = 400) canvas.pack() canvas.create_polygon(10, 10, 10, 60, 50, 35) def movetriangle(event) : if event.keysym == 'Up': canvas.move(1, 0, -3)##第一个参数使画布上所画的形状的ID数字,第二个是对x(水平方向)坐标增加的值,第三个是对y(垂直方向)坐标增加的值elif event.keysym == 'Down': canvas.move(1, 0, 3) elif event.keysym == 'Left': canvas.move(1, -3, 0)
- else: canvas.move(1, 3, 0) canvas.bind_all('<KeyPress-Up>', movetriangle)##让tkinter监视KeyPress事件,当该事件发生时调用movetriangle函数canvas.bind_all('<KeyPress-Down>', movetriangle) canvas.bind_all('<KeyPress-Left>', movetriangle) canvas.bind_all('<KeyPress-Right>', movetriangle)
方向键控制三角形的移动
十二、更多使用 ID 的方法
只要用了画布上面以 create_开头的函数,它总会返回一个 ID。这个函数可以在其他的函数中使用。
如果我们修改代码来把返回值作为一个变量保存,然后使用这个变量,那么无论返回值是多少,这段代码都能工作:
- >>> mytriangle = canvas.create_polygon(10,10,10,60,50,35)>>> canvas.move(mytriangle,5,0)
我们可以用 itemconfig 来改变三角形的颜色,这需要把 ID 作为第一个参数:
- >>> canvas.itemconfig(mytrigle,fill='bue') ##把ID为变量mytriangle中的值的对象的填充颜色改为蓝色
也可以给三角形一条不同颜色的轮廓线,同样适用 ID 作为第一个参数:
- >>> canvas.itemconfig(mytrigle,outline='red')
总结做出了简单的动画。学会了如何用事件绑定来让图形响应按键,这在写计算机游戏时很有用。在 tkinter 中以 create 开头的函数是如何返回一个 ID 数字。
已经学习 Python 两天,最开始是想着是通过觉得用它写个动画或者画个图形比较方便,而且界面美观,比黑洞洞的 dos 窗口好多了,准备写个程序送个一女孩作为生日礼物(去年答应好的)。经过这两天的学习,我慢慢发觉了 Python 语言的优点,其最主要的就是易学,而且可以调用各种库。
以上所述是小编给大家介绍的使用 Python 中的 tkinter 模块作图的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 PHPERZ 网站的支持!
来源: http://www.phperz.com/article/17/0316/324832.html