可视工具:tkinter

初识tkinter

为了使编程更加直观有趣,使用可视化的界面更引人入胜。GUI就是Graphical User Interface,图形化用户接口的意思。很多编程平台都有自己的GUI,python既是一门语言,也是一种开发环境,提供了多种GUI,其中,官方认可的GUI叫做tkinter,基于Tcl/tk的GUI。
官网文档入口: https://docs.python.org/2/library/tkinter.html

安装

官方文档中说,tkinter是和python绑定、一般来说直接可用的,如果不可用呢?怎么安装却没有正式提及。顺着文档链找进去,才在这里找到正式描述: Windows和OS X的python包管理器对tkinter支持较好,但是Linux和BSD系统需要单独安装,在Ubuntu系统下,使用命令:

 sudo apt-get install python python-tk idle python-pmw python-imaging

其实Ubuntu默认即已经安装了python,其中有些包是不必安装的,但是这个安装命令会安装tkinter。

使用tkinter

首先,要引用tkinter包,对python2.x import tkinter as tk 对python2.7及以上,以及python3.x则要用 import Tkinter as tk 以下一概用tk指代包名称。

基本框架

tkinter中需要建立一个窗口,作为整个程序的主界面,其他内容都在窗口内发生。
主窗口的建立语句是 window = tk.Tk() 其中window是自定义名称,后面的语句建立了一个窗口对象。

tkinter也是事件驱动的编程框架,需要外部事件的推动才能运行。不同于simplegui,tkinter中必须明确建立事件循环,即,用来等待外部事件的循环。否则的话,整个tkinter都运行不了。开启事件循环的代码: tkinter.mainloop()

Canvas组件

tk.Canvas()创建一个Canvas。
bd或者borderwidth可以设置边框的“厚度”。这个“厚度”会占用canvas的实际可用空间,而不是挤占外部空间。

Canvas事件

为了让canvas组件响应外部事件,需要bind方法进行绑定: canvas.bind("event-name-string", event_handler) 比如,我们要绑定鼠标事件,则event-name-string为"Button",任何鼠标按键按下都会触发该事件,如果要绑定特定鼠标按键的按下事件,则鼠标的左键、中键、右键对应的事件名称分别是:Button-1、Button-2、Button-3(请注意,只有双键的鼠标,右键仍然是Button-3)。 Button事件实际上相当于按键按下事件;如果想捕获按键弹起事件,需使用ButtonRelease事件,特定鼠标按键的弹起事件命名同Button事件。
注意当同时使用了Button和Button-i绑定事件句柄之后,事件发生后,Button绑定失效。 注意2如果同一事件绑定了两个句柄,则代码中后绑定的一个会覆盖先绑定的一个。

注意

使用中文

python默认将所有程序代码视为ASCII,如果使用了中文,它就会不认识,然后报错。经验证,在不显式提示编码信息的情况下,使用
u"中文" 或者
u"中文".encode(”utf-8") 都是无效的。
显式提示编码信息的方法有,在代码文件的第1行或者第2行,输入:

 # coding=utf-8

注意:coding和=之间不能用空格。
或者

 # -*- coding: utf-8  

注意2:如果要确认当前文件的编码方式,在Linux下可以使用file -i filename命令
参考https://www.python.org/dev/peps/pep-0263/