前言

近期有写一个简单GUI程序的点子,具体写什么就不说了,但一个要求就是有跨平台的功能。

确切的讲,是我希望这个程序写好后能同时在Windows和Linux下运行,而且要方便随时修改。

对于编程语言,处于练习的目的,我还是选择了Python,版本就用2.7的了,毕竟3版本个人

觉得有些不习惯。

推荐文档

不得不承认,在文档资源方面Tkinter的资源确实不怎么多,但下面这个的确也够我用了。

http://www.nmt.edu/tcc/help/pubs/tkinter.pdf

文档是英文的,英文不行的就别抱怨了,趁早转行吧,反正以后我会教育自己的孩子一定要学好英文的。。。

为什么选用Tkinter

Python下有许多的GUI模块可供选择,其中不乏比较流行和强大的模块,如wxPython。

我选择Tkinter的原因其实很简单:

1. Tkinter是Python安装包里自带的图形库支持包,无需额外安装,方便

2. Tkinter是轻量级的GUI方案,轻量级的缺点是不能做太复杂的界面,我需要的只是写拥有几个按钮,

几个文本框,几个复选框这样的简单GUI程序,这个Tkinter是完全可以胜任的了。轻量级的好处就是简单。

对于我来说,快速的写出我想要的东西是很重要的,我可不希望写个GUI还需要先学习很长一段时间。。。

3. Python的GUI编辑器IDLE就是使用Tkinter实现的,我觉得我写的东西应该不会比它复杂

4. 我对于GUI的外观没有很苛刻的要求,而且Tkinter有一个叫ttk的模块,支持本地化的主题样式,做出来的

GUI程序并不会太丑。

Tkinter是什么

Tkinter是由Python实现的一个Module,全称Tk interface,它提供了使用Python方式调用Tcl/TK的库最终达到显示图形化界面的目的。

Tcl/Tk本身是一个GUI图形库,类似于GTK以及Qt。

在Python Manual中,将Tkinter的调用层次说明了一下,我的理解如下:

用户的Python程序 - Tkinter Module - C实现的tkinter扩展 -C/Tcl语言实现的Tk插件 -Xlib

Python本身是跨平台的,Tcl/Tk图形库也是跨平台的,所以Tkinter也能跨平台。。。

对于Python程序员来说,并不需要详细的了解Tcl/Tk这个图形库,当然如果能了解肯定对于Tkinter的编程是有帮组的。

就像Java程序员不需要了解C++,但如果了解C++对于Java程序员也是很有帮助的一样的道理。

我的目的是“快”,所以就不去仔细了解Tck/Tk了,我就参考推荐文档里的内容来做尝试吧。

最简单的Tkinter例子

在Tkinter 8.5 reference这个文档中,有一个最简单的例子:

#!/user/bin/env python
import Tkinter as tk class Application(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.grid()
self.createWidgets() def createWidgets(self):
self.quitButton = tk.Button(self, text='Quit', command=self.quit)
self.quitButton.grid() app = Application()
app.master.title('Sample application')
app.mainloop()

文档中有说明每一条语句的意思,这里我就做个翻译的工作,加上点我自己的理解。

第1行:这是告诉Shell程序“使用什么程序来执行这个脚本程序”,这在Linux下的脚本语言基本都支持这样的语句(Windows下此句无意义),抛开它的实际意义不谈,这就是一个注释。

第2行:导入Tkinter模块的命名空间(也就是类以及符号等内容),并将其命名空间重映射为tk(为了编程时少打几个字。。。)

第4行:这里自己定义了一个名叫Application的类且指明此类是继承自tk.Frame类的,也就是说:tk.Frame所支持的方法和成员,Application也都支持。

第5行:__init__函数是class中的一个特殊方法,类似于C++中的构造函数,通常大家就叫它构造函数

第6行:调用父类的构造函数,通常子类的构造函数都需要调用父类的构造函数,这可以说也是继承的一个典型表现

第7行:这里调用了一个grid方法,这是为了将程序显示出来所需要的,文档中有关于grid的详细介绍,后续可能会深入了解,此处就不进一步深入了。

第10行:为Application创建了一个方法,此方法中创建了一个Button按钮,并且设置了Button按钮的属性,如:显示的字符为Quit,对应的命令函数为self.quit

第14行:这里创建了一个Application类的实例,此实例一创建就会运行__init__这个方法,也就是构造函数

第15行:调用一个方法来设置窗口的标题内容为“Sample application”

第16行:这里开始进行GUI程序的消息循环,实际上类似于MFC中的主循环,此时GUI程序就处于死循环中一直等待各种消息事件(如鼠标,键盘等消息)

程序执行后显示的GUI界面如下:

有点丑?没关系,人都可以整容,程序难道还不能美化,咱先关注的是内在美,先把功能实现了,有时间再做美化的工作,反正这个程序是咱自己用的。。

小结

经过查资料,以及简单的学习,了解可Tkinter是个什么东西,并对使用其搭建的GUI程序框架有了一个简单直观的了解。

到目前为止,Tkinter给我的感觉是:新鲜而直接

TkinterGUI - 初识Tkinter的更多相关文章

  1. 初识python:tkinter 实现 弹球小游戏(面向对象)

    使用蹩脚式面相对象,实现弹球小游戏(非面向对象实现,主要介绍tk基础用法). #!/user/bin env python # author:Simple-Sir # time:2020/8/7 10 ...

  2. 初识python:tkinter 实现 弹球小游戏(非面相对象)

    通过 tkinter 采用非面相对象式实现弹球小游戏(使用蹩脚式面相对象实现). #!/user/bin env python # author:Simple-Sir # time:2020/8/3 ...

  3. Python之旅Day1 数据类型初识(数字|字符串|列表|数据运算) 编码 表达式(if...else|for|while)

    初识PYTHON Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum(吉多·范罗苏姆)于 ...

  4. 1DAY 初识Python

    一 本节目标 了解编程语言 了解python及与其他语言的优劣对比 安装python解释器及环境变量配置.运行python交互式环境 打印hello world程序 初识变量.用户输入,流程控制,wh ...

  5. Python之路--Python初识

    Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程 ...

  6. 1.python真的是万恶之源么?(初识python)

    python真的是万恶之源么? 计算机基础及puthon了解 1.计算机基础知识 cpu : 相当于人类大脑,运算和处理问题 内存 : 临时存储数据,单点就消失,4G,8G,16G,32G 硬盘 : ...

  7. 用tkinter写出you-get下载器界面,并用pyinstaller打包成exe文件

    本文为原创文章,转载请标明出处 一.you-get介绍 you-get是一个基于 python 3 的下载工具,使用 you-get 可以很轻松的下载到网络上的视频.图片及音乐.目前支持网易云音乐.A ...

  8. python开发第一篇:初识python

    一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为AB ...

  9. Python高手之路【一】初识python

    Python简介 1:Python的创始人 Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种解释型.面向对象.动态数据类型的高级程序设计语言,由荷兰人Guido ...

随机推荐

  1. 最简单的基于FFMPEG+SDL的视频播放器 ver2 (採用SDL2.0)

    ===================================================== 最简单的基于FFmpeg的视频播放器系列文章列表: 100行代码实现最简单的基于FFMPEG ...

  2. 关于mysql运行效率优化注意事项及要点

    1. SQL优化的原则是:将一次操作须要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量. 调整不良SQL通常能够从下面几点切入: ? 检查不良的SQL,考虑其写法是否还有可优化内容 ? ...

  3. 新发现的Cyberduck(映射网盘)和zsuncloud(硬件产品很新潮),群辉nas的确好用(购买链接)

    https://cyberduck.io/?l=en http://www.zsuncloud.com/ 群辉nas的确好用啊在哪里可以买到?官网 淘宝也可以自己做黑群晖 先用xpenoboot is ...

  4. Win2003 Server磁盘配额揭密之启用篇

    Win2003 Server磁盘配额揭密之启用篇 [ 作者:茶乡浪子    转贴自:it168.com    点击数:4973    更新时间:2005-1-17  ]   本文要向大家介绍如何利用W ...

  5. CppCMS URL使用

    Artyom觉得URL分为三个组成部分: Script_Name / Path_Info ? Query_String 比方以下的: /foo/bar.php/test?x=10 Script_Nam ...

  6. Eclipse 乱码问题 修改设置

    1.工作空间的字符编码设置 2.对于任意的项目,可以右键选择属性,然后修改 3.对于任意一个文件,同样的操作,右键选择属性,然后配置字符编码

  7. [置顶] location.href你真的会用了?

    *.location.href 用法: top.location.href=”url”          在顶层页面打开url(跳出框架) self.location.href=”url”       ...

  8. 大数据实时处理-基于Spark的大数据实时处理及应用技术培训

    随着互联网.移动互联网和物联网的发展,我们已经切实地迎来了一个大数据 的时代.大数据是指无法在一定时间内用常规软件工具对其内容进行抓取.管理和处理的数据集合,对大数据的分析已经成为一个非常重要且紧迫的 ...

  9. CImageList类Create函数参数解析

    前面提到了CImageList类的Create(...)函数,虽然MSDN上已经有所解释,但仍有网友问到参数的具体含义,下面就我的理解,对参数进行一次轻量级的剖析 函数原型(其他重载函数请参看msdn ...

  10. Linux终端颜色和标题设置

    Linux给人最大的享受就是可以根据个人喜好去定制令自己舒服的系统配置,像终端颜色的设置就是一个典型的例子. 图1 系统默认状态下的终端显示 在没有经过自定义配置的终端下工作久了,难免容易疲劳,因为所 ...