本篇之目的,在于提供用TKinter做GUI的几个模版、框架,以后需要写个带界面的小程序时,能立即上手,摆兵(控件)布阵(容器),速战速决。
在Tkinter控件的布局中,可以使用一些容器控件来组织、布局控件,结构性更强,易于管理控件。
本篇将介绍Frame、LabelFrame、Notebook容器控件及Toplevel窗口,PanedWindow就不讲了。其中,用到的控件有Label、Button、Text、Scrollbar、Massage,用到的布局方法有pack()、grid()。
各种控件的详细应用可参考相关书籍、Python文档。
1 Frame
Frame容器控件,顾名思义,搭个架子,摆放东西。Frame作为容器,既可以往里添加控件,也可以往里添加容器,只要能组织、布局条理清晰即可。
在P22-G5-Frame.py中,在ExWin()类下面定义了3个方法,将创建2个Frame容器及往里添加控件的代码单独定义了方法,这样做只是为了将窗口、容器、控件关系更明确。好处是,要添加容器时,可以先创建一个方法,没设计完,不调用,不影响程序运行;要改一个容器内控件布局时,可以在其单独定义的方法内改,如果没改完,程序不调用该方法,则不影响程序运行。
在向Frame中创建、添加Label或Button时,用了for循环语句。如果控件不多,且后面要对控件更改设置时,不建议这样用。
2 LabelFrame
同样,为两个LabelFrame创建了两个方法,便于定向修改而不影响程序运行。P23-G5-LabelFrame.py及运行结果如下。
3 Notebook
在顶层窗口中创建了一个Notebook,包含4个标签页(选项卡),4个标签页中分别有:Frame、LabelFrame、Text、Text&Scrollbar。为每个标签页的内容定义了一个方法:crtFrame()、crtLabelFrame()、crtText()、crtText_Scroll()。
P24-G5-Notebook.py及运行结果如下。
4 Toplevel
在顶层窗口中创建了一个LabelFrame,包含1个标签、2个Button,单击Button可以打开一个对应的Toplevel窗口。一个Toplevel窗口为空,一个Toplevel窗口添加了Message控件。
P25-G5-Toplevel.py及运行结果如下。
5 小结
本篇4个程序给出了GUI控件布局、容器应用的模版框架,易于理解、改编。以后需要用Python写简单GUI小软件时,可以迅速上手。