您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > python gui kinter
到16页Tkinter教程这系列教程完全以代码的形式来写的,目标是:读者看代码和注释就可以理解代码的意思。但这里的读者需要具备的几项技能:熟悉python语言的基础,如果还没有,先看一下python的教程吧,英文官方();对界面编程有一定的了解,知道基本的概念就可以了;对Tk有兴趣,别以为她是已经过时的技术,如果丧失了学习的兴趣,那肯定无法完成了;不要以Ctrl+C/Ctrl+V的方式使用本教程(虽然它可以这样直接运行),自己输入,你会发现自己原来也会犯这样的错误;安装了python2.5且确认安装了Tkinter模块(默认就安装了,如果你没有强制的把它去掉的话),下载python2.5();如果在阅读教程中有不明白的,不要强迫自己,直接跳过去,继续下一个内容。Tkinter教程系列教程的特点:他不是一本经过文字润色的文章,全部是代码,作者在必要的时候使用注释来解释;以组件为章节进行介绍,每个组件又分为不同的例子,各个例子可以单独使用,分别使用序号标注;各个例子的使用“注释+序号”的格式表示开始,下一个例子的开始为上一个例子的结束;全部使用结构化编程(SP),没有面向对象的概念(OO);基本上包含了TKinter的所有的控件,根据每个控件的使用方法,选择性的介绍了其属性和方法,没有全部介绍,全部的介绍查看Tkinter的官方参考();例子不是百分百的完美,甚至有的例子没有按照Tkinter参考的描述完成,原因由于作者没有看懂:(参考书籍:,如有冲突以Tkinter参考为准最后祝各位Tk一路快乐!Label#Tkinter教程之Label篇'''1.Label的第一个例子text属性使用方法'''#要使用Tk模块,除非你不想使用这个模块,那整个教程就不需要看了fromTkinterimport*#初始化Tkroot=Tk()#创建一个label,使用编码,到现在为止还没有使用过直接通过“drag-and-drop”就可以完成的IDE。label=Label(root,text='HelloTkinter')#显示label,必须含有此语句label.pack()#root.pack()#但root是不需要(严格地说是必须不这样使用),否则解释器抱怨#进入消息循环root.mainloop()#控件的显示步骤:#1.创建这个控件#2.指定这个空间的master,即这个控件属于哪一个#3.告诉GM(geometrymanager)有一个控件产生了'''还有更简单的一个例子:将‘HelloTkinter’打印到标题上,Label也不用创建了fromTkinterimport*root=Tk()root.title('helloTkinter')root.mainloop()再没法儿简化了,就这样吧''''''2.在label上使用内置位图bitmap的使用方法'''fromTkinterimport*#初始化Tkroot=Tk()#创建一个label,使用编码,到现在为止还没有使用过直接通过“drag-and-drop”就可以完成的IDE。label=Label(root,bitmap='error')#上面的代码使用了内置位图error#显示label,必须含有此语句label.pack()#进入消息循环root.mainloop()'''其他可用的位图:*error*hourglass*info*questhead*question*warning*gray12*gray25*gray50*gray75若要查看各自的效果,可以使用相应的名称将bitmpa='error'替换。据说还可以使用自己指定的位图文件,网上找了一下,格式如下:Label(root,bitmap=@/path/bitmapname)不过我试了一下,从来没有成功过,我已经将位图该为单色的了:(另:还有的网上的文章说明如何使用PhotoImage和BitmapImage显示bmp或gif文件,提到一点防止图像文件被python自动回收(garbagecollected),应将bmp或gif放到全局(global)或实体(instance)中,使用如下两种方法,仍未奏效:'''#使用image属性#bm=PhotoImage(file='c:\\python.gif')#label=Label(root,image=bm)#label.bm=bm#错误信息:#TclError:imagepyimageXXdoesn'texist#使用bitmap属性#bm=BitmapImage(file='c:\\python2.bmp')#label=Label(root,bitmap=bm)#label.bm=bm#label.pack()#错误信息:#TclError:formaterrorinbitmapdata'''虽然二者均没有起作用,还是要说明一下,bitmap与image的关系,如果同时指定这两参数,image优先。''''''3.改变控件的前景色和背景色fg:前景色bg:背景色设置背景色的一个大的用处是:可以判断控件的大小(不同的控件使用不同的颜色,后续内容可以使用此特性来调试container)'''fromTkinterimport*root=Tk()#在创建Label时指定各自使用的颜色'''可以使用的颜色值:'''#使用颜色名称Label(root,fg='red',bg='blue',text='HelloIamTkinter').pack()#使用颜色值#RRGGBBLabel(root,fg='red',bg='#FF00FF',text='HelloIamTkinter').pack()#使用系统相关的颜色值(Windows),不建议使用这样的值,不利于平台移植Label(root,fg='red',bg='SystemButtonShadow',text='HelloIamTkinter').pack()root.mainloop()'''(1).使用颜色名称RedGreenBlueYellowLightBlue......(2).使用#RRGGBBlabel=Label(root,fg='red',bg='#FF00FF',text='HelloIamTkinter')指定背景色为绯红色(3).除此之外,Tk还支持与OS相关的颜色值,如Windows支持SystemActiveBorder,SystemActiveCaption,SystemAppWorkspace,SystemBackground,......''''''4.设置宽度与高度width:宽度height:高度'''fromTkinterimport*root=Tk()#创建三个Label,分别显示red,blue,yellow#注意三个Label的大小,它们均与文本的长度有关Label(root,text='red',bg='red').pack()Label(root,text='blue',bg='blue').pack()Label(root,text='yellow',bg='yellow').pack()#再创建三个Label,与上次不同的是这三个Label均使用width和heigth属性#三个Label的大小由width和height指定Label(root,bg='red',width=10,height=3).pack()Label(root,bg='blue',width=10,height=3).pack()Label(root,bg='yellow',width=10,height=3).pack()root.mainloop()'''5.同时使用图像与文本compound:指定文本(text)与图像(bitmap/image)是如何在Label上显示,缺省为None,当指定image/bitmap时,文本(text)将被覆盖,只显示图像了。可以使用的值:left:图像居左right:图像居右top:图像居上bottom:图像居下center:文字覆盖在图像上bitmap/image:显示在Label上的图像text:显示在Label上的文本label=Label(root,text='Error',compound='left',bitmap='error')'''fromTkinterimport*root=Tk()#演示compound的使用方法#图像与文本在Label中的位置#图像居下Label(root,text='botton',compound='bottom',bitmap='error').pack()#图像居上Label(root,text='top',compound='top',bitmap='error').pack()#图像居右Label(root,text='right',compound='right',bitmap='error').pack()#图像居左Label(root,text='left',compound='left',bitmap='error').pack()#文字覆盖在图像上Label(root,text='center',compound='center',bitmap='error').pack()#消息循环root.mainloop()'''6.文本的多行显示在Tk004中,使用width和heigth来指定控件的大小,如果指定的大小无法满足文本的要求是,会出现什么现象呢?如下代码:Label(root,bg='welcometojcodeer.cublog.cn',width=10,height=3).pack()运行程序,超出Label的那部分文本被截断了,常用的方法是:使用自动换行功能,及当文本长度大于控件的宽度时,文本应该换到下一行显示,Tk不会自动处理,但提供了属性:wraplength:指定多少单位后开始换行justify:指定多行的对齐方式ahchor:指定文本(text)或图像(bitmap/image)在Label中的显示位置可用的值:ewnsneseswsncenter布局如下图nwnnewcentereswsse'''fromTkinterimport*root=Tk()#左对齐,文本居中Label(root,text='welcometojcodeer.cublog.cn',bg='yellow',width=40,height=3,wraplength=80,justify='left').pack()#居中对齐,文本居左Label(root,text='welcometojcodeer.cublog.cn',bg='red',width=40,height=3,wraplength=80,anchor='w').pack()#居中对齐,文本居右Label(root,text='welcometojcodeer.cublog.cn',bg='blue',width=40,height=3,wraplength=80,anchor='e').pack()root.mainloop()'''运行一下程序就可以直观的看出,justify与anchor的区别了:一个用于控制多行的对齐;另一个用于控制整个文本块在Label中的位置''Button(1)#JTkinter教程之Button篇(1)#Button功能触发事件'''1.一个简单的Button应用'''fromTkinter
本文标题:python gui kinter
链接地址:https://www.777doc.com/doc-6123789 .html