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” |