Python Tkinter GUI编程入门介绍


Posted in Python onMarch 10, 2015

一、Tkinter介绍

Tkinter是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口。Tkinter不是唯一的python图形编程接口,但是是其中比较流行的一个。最大的特点是跨平台,缺点是性能不太好,执行速度慢。
一般使用Tkinter的方法是:
From Tkinter import *
或者: import Tkinter 两者的区别我们前面讲模块的时候已经说过了。
 
二、Tkinter的使用

先看一下GUI程序的开发,熟悉MFC的朋友应该不会陌生。在GUI程序中,我们会有一个顶层窗口,在这个顶层窗口上可以包括所有的小窗口对象,像标签,按钮,列表框等等,也就是说顶层窗口时我们放置其他窗口或者控件的地方。我们用下面的语句可以创建一个顶层窗口,或者叫根窗口:

Import Tkinter

top = Tkinter.Tk()

(如果前面是用的from Tkinter import * ,那么Tk()就够了)
然后我们就可以在这个根窗口上设置“组件”了。通常这些组件会有一些相应的行为,比如鼠标点击,按下等等,这些称为事件,而程序会根据这些时间采取相应的反应,称为回调。这个过程成为事件驱动。
所有的创建和放置完毕后,就立刻进入主循环,代码如下:
Tkinter.mainloop( )

Tk的组件有很多,不可能一一介绍,通过一个小例子看看其中一个标签的使用吧。
>>> import Tkinter

>>> top = Tkinter.Tk()

>>> label = Tkinter.Label(top,text='Hello World')

>>> label.pack()

>>> Tkinter.mainloop()

运行结果就是
 
下面解释一下:

第一行,是导入模块。
第二行,创建主窗口。
第三行,创建label标签,它是有Tkinter的一个方法Label来实现的,关于Label的帮助可以help一下。
第四行,pack()是用来管理和显示组件的,它的参数我们以后再说。
第五行,mainloop()进入主循环。剩下的事就系统的了。
 
下面看看组件的配置。Tk中的每一个组件都有很多option,通过改变这些option可以改变组件的外观,比如显示的内容,颜色,大小,位置,事件处理函数等。

比如: w=label(root,text='hello',fg='red')

创建一个w,第一个参数时他的master widget,是root,所有参数都有默认的。我们可以用默认的来创建,w.cget(option)得到一个option的值。同样可以用w.config(option='')来设置某个参数的值。

三、Tkinter的几何管理器

熟悉GUI编程的人知道,放好每个组件的是很繁琐的,不仅要调整自身大小,还要
整和其他组件的相对位置。Tk提供了三个管理器来帮助我们:Pack  Grid  Place
1、pack
Pack使用很简单,就是w.pack(option)。常用的option有:
Side 表示把组件放到哪一边,TOP(上),BOTTOM(下),LEFT,RIGHT
Padx和pady  表示parcel的每一个边和组件的预留空间。
Ipadx和ipady,表示组件的每一个边和他包含的内容之间的预留空间。
Anchor表示在parcel放置组件的方式,缺省时CENTER。
2、grid
使用方法和pack类似。
3、place
精确的摆放一个组件的位置,一般不太用。
 
关于这个三个的详细使用和算法可以参考相关资料。
 
下面看最后一个例子:

Python Tkinter GUI编程入门介绍

先看一下结果。

Python Tkinter GUI编程入门介绍

通过拖动进度条而改变文字大小

Python Tkinter GUI编程入门介绍

看一下代码:

from Tkinter import *  #引入模块

#resize函数是用来改变文字大小的,当进度条改变时调用

def resize(ev=None):

label.config(font='Helvetica -%d bold' % scale.get())

#config函数就是通过设置组件的参数来改变组件的,这里改变的是font字体大小

top=Tk()   #主窗口

top.geometry('600x400')  #设置了主窗口的初始大小600x400

label=Label(top,text='Hello world!',font='Helvetica -12 bold')  #设置标签字体的初始大小

label.pack(fill=Y,expand=1)

#scale创建进度条,设置

scale=Scale(top,from_=10,to=40,orient=HORIZONTAL,command=resize)

scale.set(12)  #设置起始位置

scale.pack(fill=X,expand=1)

quit = Button(top,text='QUIT',command=top.quit,activeforeground='white',

activebackground='red')

quit.pack()

mainloop()
Python 相关文章推荐
sqlalchemy对象转dict的示例
Apr 22 Python
python 写的一个爬虫程序源码
Feb 28 Python
python实现可以断点续传和并发的ftp程序
Sep 13 Python
python中 logging的使用详解
Oct 25 Python
Pandas:DataFrame对象的基础操作方法
Jun 07 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
Dec 21 Python
用uWSGI和Nginx部署Flask项目的方法示例
May 05 Python
对Pytorch神经网络初始化kaiming分布详解
Aug 18 Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 Python
利用python实现逐步回归
Feb 24 Python
python实现AHP算法的方法实例(层次分析法)
Sep 09 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 Python
Python格式化css文件的方法
Mar 10 #Python
Python将xml和xsl转换为html的方法
Mar 10 #Python
Python写的Tkinter程序屏幕居中方法
Mar 10 #Python
Python生成随机密码
Mar 10 #Python
Python获取单个程序CPU使用情况趋势图
Mar 10 #Python
Python使用xlrd读取Excel格式文件的方法
Mar 10 #Python
使用graphics.py实现2048小游戏
Mar 10 #Python
You might like
基于mysql的论坛(5)
2006/10/09 PHP
PHP+APACHE实现用户论证的方法
2006/10/09 PHP
php通用防注入程序 推荐
2011/02/26 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
js 分栏效果实现代码
2009/08/29 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
详解Vue-cli代理解决跨域问题
2017/09/27 Javascript
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
python字符串的方法与操作大全
2018/01/30 Python
python 如何区分return和yield
2020/09/22 Python
浏览器实现移动端高性能css3动画(开启gpu加速)
2013/12/23 HTML / CSS
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
理工科学生的自我评价
2013/12/15 职场文书
一年级班主任寄语
2014/01/19 职场文书
简历的自我评价范文
2014/02/04 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
学校端午节活动方案
2014/08/23 职场文书
我爱家乡演讲稿
2014/09/12 职场文书
语文复习计划
2015/01/19 职场文书
户外亲子活动总结
2015/05/08 职场文书
秋季运动会加油词
2015/07/18 职场文书
数学复习课教学反思
2016/02/18 职场文书
如何才能写好调研报告?
2019/07/03 职场文书
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python