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语言的优点,其最主要的就是易学,而且可以调用各种库。
1)首先Python画图与WING IDE无关,最简单的是使用Tkinter画图2)画出单词有很多方法,最笨的是用划线方式一笔一笔的画。其次是直接输出文本,但意义不大。另外一种方法是调用图片,你可以在图片上任意画好东西后显示出来。
3)代码示例:(这个例子就画了个简单的字母P)
from Tkinter import *
root=Tk()
root.title('Drawing Example')
canvas=Canvas(root,width=200,height=160,bg='white')
canvas.create_line(10,10,100,70)
canvas.create_line(10,10,40,10)
canvas.create_line(40,10,40,40)
canvas.create_line(10,40,40,40)
canvas.pack()
root.mainloop()
python提供了多个图形开发界面的库,几个常用Python GUI库如下:
Tkinter: Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.,Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能键全的 GUI 用户界面。
Jython:Jython程序可以和Java无缝集成。除了一些标准模块,Jython使用Java的模块。Jython几乎拥有标准的Python中不依赖于C语言的全部模块。比如,Jython的用户界面将使用Swing,AWT或者SWT。Jython可以被动态或静态地编译成Java字节码。
Tkinter 编程
Tkinter 是Python的标准GUI库。Python使用Tkinter可以快速的创建GUI应用程序。
由于Tkinter是内置到python的安装包中、只要安装好Python之后就能import Tkinter库、而且IDLE也是用Tkinter编写而成、对于简单的图形界面Tkinter还是能应付自如。
创建一个GUI程序
1、导入Tkinter模块
2、创建控件
3、指定这个控件的master, 即这个控件属于哪一个
4、告诉GM(geometry manager)有一个控件产生了。
实例:
1 #!/usr/bin/python2 # -*- coding: UTF-8 -*-3 4 import Tkinter5 top = Tkinter.Tk()6 # 进入消息循环7 top.mainloop()
实例2:
1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 4 from Tkinter import * # 导入 Tkinter 库 5 root = Tk() # 创建窗口对象的背景色 6 # 创建两个列表 7 li = ['C','python','php','html','SQL','java'] 8 movie = ['CSS','jQuery','Bootstrap'] 9 listb = Listbox(root) # 创建两个列表组件10 listb2 = Listbox(root)11 for item in li: # 第一个小部件插入数据12 listb.insert(0,item)13 14 for item in movie: # 第二个小部件插入数据15 listb2.insert(0,item)16 17 listb.pack() # 将小部件放置到主窗口中18 listb2.pack()19 root.mainloop() # 进入消息循环
Tkinter 组件
Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为控件或者部件。
目前有15种Tkinter的部件。我们提出这些部件以及一个简短的介绍,在下面的表:
控件
描述
Button 按钮控件;在程序中显示按钮。
Canvas 画布控件;显示图形元素如线条或文本
Checkbutton 多选框控件;用于在程序中提供多项选择框
Entry 输入控件;用于显示简单的文本内容
Frame 框架控件;在屏幕上显示一个矩形区域,多用来作为容器
Label 标签控件;可以显示文本和位图
Listbox 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
Menubutton 菜单按钮控件,由于显示菜单项。
Menu 菜单控件;显示菜单栏,下拉菜单和d出菜单
Message 消息控件;用来显示多行文本,与label比较类似
Radiobutton 单选按钮控件;显示一个单选的按钮状态
Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间
Scrollbar 滚动条控件,当内容超过可视化区域时使用,如列表框。.
Text 文本控件;用于显示多行文本
Toplevel 容器控件;用来提供一个单独的对话框,和Frame比较类似
Spinbox 输入控件;与Entry类似,但是可以指定输入范围值
PanedWindow PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。
LabelFrame labelframe 是一个简单的容器控件。常用与复杂的窗口布局。
tkMessageBox 用于显示你应用程序的消息框。
标准属性
标准属性也就是所有控件的共同属性,如大小,字体和颜色等等。
属性 描述
Dimension 控件大小;
Color 控件颜色;
Font 控件字体;
Anchor 锚点;
Relief 控件样式;
Bitmap 位图;
Cursor 光标;
几何管理
Tkinter控件有特定的几何状态管理方法,管理整个控件区域组织,一下是Tkinter公开的几何管理类:包、网格、位置
几何方法 描述
pack() 包装;
grid() 网格
place() 位置
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)