图形用户界面(Graphical User Interface),简称GUI,指采用图形方式显示的计算机操作用户界面。Python提供了多个GUI库,常用的有Tkinter,wxPython以及Jython,其中Tkinter模块儿(TK接口)是Python标准TK GUI工具包的接口,这里只介绍Tkinter模块儿,注:Python2.7ttk是直接导入的,ttk是自己的包,Python3.x版本都改为tkinter,t小写,ttk是包含在tkinter里面。
一、Tkinter编程
- 导入Tkinter模块儿(或 from Tkinter import*)
- 创建顶层窗口对象,用于容纳GUI, eg:top = Tkinter.Tk(),top为根窗口,frame = Tkinter.Frame(top),frame是顶层窗口
- 在顶层窗口对象中构建所有GUI组件及其功能
- 通过底层应用代码将这些GUI组件连接起来
- 进入mainloop()事件循环
下面示例代码:在Tkinter实例化中进行3、4步。
import Tkinter
#弹窗信息
from tkMessageBox import showinfo
class App:
#初始化,传入顶层窗口参数
def __init__(self,top=None):
#Button控件
self.hi_there=Tkinter.Button(top,text='Hi',fg='blue',command=self.say_hi)
#三种布局管理器,最原始的Placer,网格坐标Grid,以及常用的Packer
self.hi_there.pack(side=Tkinter.TOP)
def say_hi(self):
showinfo(title='Hi',message='Hello, welcome to the GUI world!')
if __name__ == '__main__':
#创建根窗口对象
top=Tkinter.Tk()
#Tkinter实例化
app=App(top)
#进入事件循环
top.mainloop()
注:3,4步骤是混合使用的;顶层窗口可以有多个,但是根窗口只能有一个
1、根窗体对象的常用函数:
- top.title('标题'):修改窗体名字
- top.geometry('500x500'):窗体对象的大小
- top.quit():退出
- top.update():刷新页面
- ...
2、pack控件设置位置属性参数:
- anchor:控件对齐方式,N、E、S、W、NW、NE、SW、SE、CENTER(默认值为CENTER)
- side:控件在窗体的相对位置,LEFT,RIGHT,TOP,BOTTOM
- fill:控件填充方式,X水平,Y垂直,BOTH水平和垂直,NONE不填充
- expand:1可扩展,0不可扩展
- ...
二、常用控件
在Tkinter中,每个组件都是一个类,上面第三步构建某个组件实际上是将该类进行实例化,在实例化过程中,
控件 | 描述 |
---|---|
Button | 按钮控件,与Label相似,除此之外提供鼠标悬浮,按下,释放以及键盘活动/事件 |
Canvas | 画布控件;显示图形元素如线条或文本 |
CheckButton | 多选框控件;用于在程序中提供多项选择框(与Html的checkbox类似) |
Entry | 输入控件;用于收集键盘输入 |
Frame | 框架控件;在屏幕上显示一个矩形区域,多用来作为容器 |
Label | 标签控件;可以显示文本和位图 |
Listbox | 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户 |
Menubutton | 菜单按钮控件,用于显示菜单项。 |
Menu | 菜单控件;按下MenuButton后弹出的选项列表,显示菜单栏,下拉菜单和弹出菜单 |