kinter 共有三种几何布局管理器,分别是:pack布局,grid布局,place布局。
pack布局:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from tkinter import *
from tkinter import messagebox
__author__="陶陶"
class app:
# 下载事件
def dowloacd(*args):
messagebox._show("提示","哈哈 你点对了")
# 创建窗体
root=Tk()
# 窗体名称
root.title("华泰汽车")
# 窗体大小
root.geometry("600x400+300+300")
#创建lab标签
Label(root,text="lab1",bg='red',font=("宋体",22)).pack(side=LEFT, anchor=W, fill=X, expand=YES)
Label(root,text="lab2",bg="green",font=("宋体",20)).pack()
Button(root,text="but1",bg="green",font=("宋体",24),command=dowloacd).pack()
# 启动窗体
root.mainloop()
属性名称 | 属性解析 | 取值 |
fill | 设置组件是否水平或垂直方向填充 | 值:(X,Y,BOTH,NONE) fill=X(水平方向填充) fill=Y(垂直方向填充) fill=BOTH(水平和垂直) fill=NONE(不填充) |
expand | 设置组件是否展开,当值为YSE是,side选项无效,组件显示在容器的中间位置, 若fill为BOTH,填充容器的剩余空间。 | expend=YES,expend=NO |
side | 设置组件的对齐方式 | 值:(LEFT,TOP,RIGHT,BOTTOM) 上下左右 |
ipadx,ipady | 设置X方向(Y方向)内部间隙(与之并列的组件之间的间隔) | 默认值0,非负整数,单位为像素 |
padx,pady | 设置X方向(Y方向)外部间隙(与之并列的组件之间的间隔) | 默认值0,非负整数,单位为像素 |
anchor | 锚选项,当可用空间大于所需求空间时,决定控件放置于容器何处 | N,E,S,W,NW,NE,SW,SE,CENTER(默认值),八个方向以及中心 |
from tkinter import * #注意模块导入方式,否则代码会有差别
class App:
def __init__(self, master):
#使用Frame增加一层容器
fm1 = Frame(master)
#Button是一种按钮组件,与Label类似,只是多出了响应点击的功能
Button(fm1, text='Top').pack(side=TOP, anchor=W, fill=X, expand=YES)
Button(fm1, text='Center').pack(side=TOP, anchor=W, fill=X, expand=YES)
Button(fm1, text='Bottom').pack(side=TOP, anchor=W, fill=X, expand=YES)
fm1.pack(side=LEFT, fill=BOTH, expand=YES)
fm2 = Frame(master)
Button(fm2, text='Left').pack(side=LEFT)
Button(fm2, text='This is the Center button').pack(side=LEFT)
Button(fm2, text='Right').pack(side=LEFT)
fm2.pack(side=LEFT, padx=10)
root = Tk()
root.title("Pack - Example")
display = App(root)
root.mainloop()
pack类提供了下来函数:
pack_slaves(),以列表方式返回本组件的所以子组件对象。
pack_configure(option=value),给pack布局管理器设置属性,使用属性(option)= 取值(value)方式设置
属性名 | 属性解析 | 取值 | 取值说明 |
row,column | row为行,column为例,设置组件放置于第几行第几例 | 取值为行,例的序号 | 序号从0开始 |
sticky | 设置组件在网格中的对齐方式 | N、E、S、W、NW、NE、SW、SE、CENTER | 类似pack |
rowspan, columnspan | 组件所跨越的行数,例数 | 跨越的行数,例数 | 行数,例数 |
ipadx ipady | pack相同 | pack相同 | pack相同 |
padx pady | pack相同 | pack相同 | pack相同 |
grid_propagate(boolean) 设置为True表示父组件的几何大小由子组件决定(默认值),反之则无关。
grid_info() 返回pack提供的选项所对应得值。
grid_forget() Unpack组件,将组件隐藏并且忽略原有设置,对象依旧存在,可以用pack(option, …),将其显示。
grid_location(x, y) x, y为以像素为单位的点,函数返回此点是否在单元格中,在哪个单元格中。返回单元格行列坐标,(-1, -1)表示不在其中
size() 返回组件所包含的单元格,揭示组件大小。
place:
属性名称 | 属性解析 | 取值 | 取值说明 |
anchor | 同pack | 同pack | 同pack |
x,y | 组件左上角的x,y坐标 | 整数,默认为0 | 绝对位置坐标,单位像素 |
relx,rely | 组件相对应父容器的x,y坐标 | 0-1之间浮点数 | 相对位置,0.0表示左边缘(或上边缘), 1.0表示右边缘(或下边缘) |
width,height | 组件宽高 | 非负数 | 像素 |
relwidth relhright | 组件相对应父容器的宽和高 | 0-1之间浮点数 | 相对位置,0.0表示左边缘(或上边缘) ,1.0表示右边缘(或下边缘) |
bordermode | 如果设置为INSIDE,组件内部的大小和位置是相对的, 不包括边框;如果是OUTSIDE,组件的外部大小是相对的,包括边框 | INSIDE、OUTSIDE(默认值INSIDE) | 可以使用常量INSIDE、OUTSIDE,也可以使用字符串形式”inside”、”outside” |