您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
使用Python中的tkinter模块作图的方法
 
作者: Zoctopus
   次浏览      
 2019-11-18
 
编辑推荐:
本文给大家介绍tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口,Python中的tkinter模块作图教程,希望对大家有帮助。
本文来自于编程课栈,由火龙果软件Delores编辑,推荐。

python简述:

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程。Python已经成为最受欢迎的程序设计语言之一。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数字。

 
   
次浏览       
相关文章

手机软件测试用例设计实践
手机客户端UI测试分析
iPhone消息推送机制实现与探讨
Android手机开发(一)
相关文档

Android_UI官方设计教程
手机开发平台介绍
android拍照及上传功能
Android讲义智能手机开发
相关课程

Android高级移动应用程序
Android系统开发
Android应用开发
手机软件测试