virtualenv&图形界面
virtualenv
在开发Python应用程序的时候,系统安装的Python只有一个3.5版本。所有的第三方包都会被安装到Python3的site-packages
目录下。
如果要同时开发多个应用程序,那么这些应用程序共用一个Python3.5,如果应用A需要jinja2.7,应用B需要jinja2.6,这时候需要用virtualenv来为一个应用创建一套隔离的Python运行环境。
第一步,创建项目文件夹myproject,在该文件夹中安装虚拟环境env:
第二步,启动虚拟环境,安装所需库类。在windows中虚拟环境的启动使用命令:your_env_dir\Scripts\activate,默认情况下,virtualenv已经安装好了pip。在启动虚拟环境后直接使用pip install命令就可以为该虚拟环境安装库类。
第三步,在虚拟环境中可以运行脚本等操作,离开虚拟环境,使用deactivate命令。
图形界面
Python支持多种图形界面的第三方库,比如:Tk,wxWidgets ,Qt,GTK等。但是Python自带的库是支持Tk的TKinter,使用Tkinter,无需安装任何包就可以直接使用。
使用TKinter十分简单,第一步导入TKinter包的所有内容:
第二步从Frame
派生一个Application
类,这是所有Widget的父容器:
在GUI中,每个Button、Label、输入框等,都是一个Widget。Frame则是可以容纳其他Widget的Widget,所有的Widget组合起来就是一棵树。
pack()
方法把Widget加入到父容器中,并实现布局。pack()
是最简单的布局,grid()
可以实现更复杂的布局。
在createWidgets()
方法中,我们创建一个Label
和一个Button
,当Button被点击时,触发self.quit()
使得程序退出。
第三步,实例化Application
,并启动消息循环:
GUI程序的主线负责监听来自操作系统的消息,并依次处理每一条消息。因此,如果消息处理非常耗时,就需要新线程中处理。运行这个GUI程序:
点击Quit按钮或者窗口的x结束程序。
输入文本
我们再对这个GUI程序改进一下,加入一个文本框,让用户可以输入文本,然后点按钮后,弹出消息对话框。
当用户点击按钮时,出发hello()
,通过self.nameInput.get()
获得用户输入的文本后,使用tkMessageBox.showinfo()
可以弹出消息对话框: