网站创建流程包括哪些步骤,wordpress 企业展示,个人做网站的好处,软件开发工程师中级职称相信刚学习使用Python进行GUI编程的时候#xff0c;肯定都会听过Tkinter#xff0c;毕竟是standard Python interface to the Tk GUI toolkit.用来写一些小程序还是很方便的。但如果是刚接触GUI编程的话肯定是被官方文档搞的有些懵#xff0c;毕竟还没弄清楚套路。之前使用过…相信刚学习使用Python进行GUI编程的时候肯定都会听过Tkinter毕竟是standard Python interface to the Tk GUI toolkit.用来写一些小程序还是很方便的。但如果是刚接触GUI编程的话肯定是被官方文档搞的有些懵毕竟还没弄清楚套路。之前使用过Tkinter但是有段时间没碰了最近又要写个小程序需要再捡起来本想着搜索下别人的文章迅速熟悉以下但是搜索水平有限并没有搜到合适的文章往往都是怎么怎么弄一下跑起来GUI形式的Hello World就完了或者写一堆又不不提套路反而不如去看编排好看一点的文档了。所以这里记录一下当作自己的学习笔记也希望能帮助到需要的人。注 以下所述运行环境都是Python2.7
先跑起来看看很显然像Tk()这种函数都是从Tkinter导入的。Tk()运行会返回一个基本窗口组件其实就是一个对象了。然后对这个对象进行一些操作就可以改变窗口的外观例如绑定其他组件改变Title什么的。最后调用mainloop方法顾名思义是启动主循环展现出窗口。另外Tkinter是事件驱动型的例如遇到点击之类的事件会进行一些反应也就是用户看到的所谓的操作了。
下面一点点来说首先来看看啥是组件以及如何绑定组件,看下面的代码#coding: utf-8
#Date: 2016.03
#Author: Huspy blog: https://www.quarkay.com
from Tkinter import *
root Tk()
root.title(觅而获)
w Label(root, textHello, world!)
w.pack()
root.mainloop()
可见中间实例化了一个Label对象在Tkinter中称之为Label组件或者标签组件然后实例化的时候有一些初始化参数例如这个组建附着在那个组建上像label组件顾名思义肯定要有内容所以也得送入相关参数这里显然参数是命名为了text。最后相当于是搞定了组件的初始化确认绑定到附着的组件当然了也可以 不绑定只不过就不会显示了只会存在于内存中只有绑定上去了才会显示。实际上这里的所谓绑定又和Tkinter的排版方式有关后面细说。
这段代码运行效果如下图Tkinter使用套路小结
到这里基本上就已经清楚了整个套路就是先初始化一个基础窗口组件然后初始化其他组件比如输入框标签Label按钮之类的初始化好了之后在绑定在相应的窗口上但是最终要显示的组建肯定是一级一级的最后绑定到了基础窗口组建上面最后调用基础窗口组件的mainloop方法启动主循环窗口就生成并且显示了。Tkinter GUI 软件的工作是基于事件驱动的比如按钮被点击什么的执行一些操作。最后要退出就点击窗口的叉叉或者调用基础窗口组件的quit()方法即可。
细说组件
在Tkinter里面有很多的组件可供选择使用用以完成不同的任务。这里只是说一下套路所以挑两个典型的用的最多的来说----Label组件和Button组件。
Label组件主要用来显示文字或者图片之类的同时有着比较丰富的表现力怎么样放进去表现呢显然是在初始化的时候放进去并且设置表现方式。例如我要显示蓝色底的红色文字并且想要控制一下宽和高可以这么初始化Label组件t Label(root, bgblue, fgwhite, textwww.mierhuo.com, width40, height2)
t.pack()
那么最终显示的时候会是这个样子再比如我想要显示图片可以这样初始化p PhotoImage(file./baifeng.gif)
w Label(root, imagep)
w.pack()
这里的PhotoImage是库里面的一个方法用于读取图片并且封装成库其他组件、方法可以直接利用的通用型对象。这样实例化之后显示的时候如下图再比如Button组件就一般软件而言显然要有文字显示表明按钮的作用并且点击之类的操作会出发一些程序动作所以实例化的时候也是如此# 变色功能按钮
bt Button(root, textBlink, fggreen, commandBlink.changeColor)
bt.pack()
# 退出功能按钮
bt Button(root, textQuit, fgred, commandroot.quit)
bt.pack()
最终显示会是这个样子可见按钮的表现力也还可以还可以控制文本的颜色。所以到这里就很清楚了每个组件都有自己的作用有自己独特的展现力另外初始化时有些资源需要先调用其他方法封装一下比如图片什么的才能加以使用。库的使用者只需要根据需要合理使用即可。
细说Tkinter GUI布局排版方式
前面有提到组件实例化之后是要调用pack()去绑定在父组件上面并且一级一级最终绑定在调用mainloop()的窗口基础组件上面。这个所谓的绑定其实就是GUI布局或者说通过这个方式进行界面的布局排版。
在Tkinter中有三种布局方式分别是Grid、Pack、Place。其中Pack前面已经出现了很多次了就pack而言从前面的小例子就可以看到似乎就是从上到下依次堆叠当然这是因为没有指定任何参数默认是如此其实pack的时候可以指定很多参数比如对齐方式、填充方式、排布方向之类的。例如前面的例子如果pack的时候修改一下参数t Label(root, bgblue, fgwhite, textwww.mierhuo.com, width40, height2)
t.pack(fillx)
这里顺便演示一下place的效果bt_blink Button(root, textBlink, fggreen, commandBlink.changeColor)
bt_blink.place(relx0.7, rely0.7)
最终代码如下#coding: utf-8
#Date: 2016.03
#Author: Huspy blog: https://www.quarkay.com
from Tkinter import *
root Tk()
root.title(觅而获)
t Label(root, bgblue, fgwhite, textwww.mierhuo.com, width40, height2)
t.pack(fillx)
p PhotoImage(file./baifeng.gif)
w Label(root, imagep)
w.pack()
class Blink():
flag 1
staticmethod
def changeColor():
if Blink.flag:
t.config(fgred, bggreen)
Blink.flag 0
else:
t.config(fgwhite, bgblue)
Blink.flag 1
bt_blink Button(root, textBlink, fggreen, commandBlink.changeColor)
bt_blink.place(relx0.7, rely0.7)
bt_quit Button(root, textQuit, fgred, commandroot.quit)
bt_quit.pack()
root.mainloop()
最终效果如下小结
相信到了这一步Python Tkinter的各种套路都很清楚了剩下的就是看文档熟悉各种组件、布局的使用方法然后练习练习就能上手了。然而Tkinter的文档似乎比较难找啊对于合适的文档我刚开始也是找了很久没找到这里分享一下effbot.org/tkinterbook/tkinter-index.htm#class-reference
另外之前用Python写过一个辣鸡嗅探器代码写的很辣鸡不过界面也是用Tkinter做的有兴趣的同学可以参考一下
界面如下其实大半年以前就打算写此文了结果就开了个头然后一直没动博客也一直没更新真是明日复明日明日何其多。以后一定要改掉这个坏习惯每天坚持学习坚持写博客记录与君共勉