tkinter的三种布局
概述:
tkinter支持三种布局,pack布局方式、grid布局方式和place布局方式,
这三种布局方式在使用的时候要防止冲突,即在一个ttk.Frame中不能使用两种布局方式,
比如,一个ttk.Frame中ttk.Label使用了grid布局方式,则其他组件如ttk.Button则不能使用pack或place
布局方式。但一个ttk.Frame内部的布局方式不需要与另外的ttk.Frame内部的布局方式保持一致,所以
实际开发中推荐的做法是ttk.Frame本身使用pack布局方式,ttk.Frame内部的各种组件使用grid布局方式。
具体还需要根据实际应用的需求做出一定的调整,但一般都要用ttk.Frame把实际的组件包起来,这样易于
排版布局。
pack布局方式支持的所有属性如下,
属性 | 说明 |
in | 依赖的父组件 |
fill | 取值范围:NONE、X、Y、BOTH X:横向填充;Y:竖向填充;BOTH:横竖向都填充 |
side | 取值范围:TOP、BOTTOM、LEFT、RIGHT TOP:居于父组件顶部;BOTTOM:居于父组件底部 LEFT:居于父组件左边;RIGHT:居于父组件右边 |
anchor | 取值范围: |
padx | 取值范围:屏幕的尺寸值,可以为一个正整数或一个元组, eg:padx=10,表示这个组件的左右横向距离其他组件的距离都为10, padx=(10,20),表示这个组件左边的距离是10,右边的距离是20 |
pady | 取值范围:屏幕的尺寸值,可以为一个正整数或一个元组, eg:pady=10,表示这个组件的上下竖向距离其他组件的距离都为10, padx=(10,20),表示这个组件上面的距离是10,下边的距离是20 |
ipadx | 取值范围:屏幕的尺寸值,可以为一个正整数或一个元组, 表示的是组件内部的文字距离组件本身的横向距离 |
ipady | 取值范围:屏幕的尺寸值,可以为一个正整数或一个元组, 表示的是组件内部的文字距离组件本身的竖向距离 |
before | 取值范围:其他组件的变量值 eg:before=self.my_label,表示这个组件在my_label这个组件后面 |
after | 取值范围:其他组件的变量值 eg:after=self.my_label,表示这个组件在my_label这个组件前面 |
网格grid布局方式支持的属性如下,
属性 | 说明 |
in | 依赖的父组件 |
row | 取值范围:正整数,从0开始,0是第一行 |
column | 取值范围:正整数,从0开始,0是第一列 |
rowspan | 取值范围:正整数,从1开始,表示组件占据的行数, 例如rowspan=3,表示组件占据3行 |
columnspan | 取值范围:正整数,从1开始,表示组件占据的列数, 例如columnspan=3,表示组件占据3列 |
padx | 取值范围:屏幕的尺寸值,可以为一个正整数或一个元组, eg:padx=10,表示这个组件的左右横向距离其他组件的距离都为10, padx=(10,20),表示这个组件左边的距离是10,右边的距离是20 |
pady | 取值范围:屏幕的尺寸值,可以为一个正整数或一个元组, eg:pady=10,表示这个组件的上下竖向距离其他组件的距离都为10, padx=(10,20),表示这个组件上面的距离是10,下边的距离是20 |
ipadx | 取值范围:屏幕的尺寸值,可以为一个正整数或一个元组, 表示的是组件内部的文字距离组件本身的横向距离 |
ipady | 取值范围:屏幕的尺寸值,可以为一个正整数或一个元组, 表示的是组件内部的文字距离组件本身的竖向距离 |
sticky | 取值范围:N、E、S、W,是个元组 eg:sticky=(N,E,W),sticky=(N,E,S,W) |
最后一种绝对布局place用的比较少,有兴趣的可以再研究下。
ttk的布局框架如下,