python tkinter 布局


pack布局

 pack 函數默認先使用的放到上面,然后依次向下排,水平位置居中(相對父窗口)

 pack  參數 [ 參數值必須大寫 ]

  side:按扭停靠在窗口的哪個位置 

   left:左 、 top: 上 、right: 右、botton:下

  fill:填充

   x:水平方向填充、y:豎直方向填充、both:水平和豎直方向填充、none:不填充

   expand:是否擴展空白區

   yes:擴展整個空白區、no:不擴展     

  anchor:位置

    N:北  下、E:東  右、S:南 下、W:西 左、CENTER:中間 

 padx: x方向的外邊距

 pady: y方向的外邊距

 ipadx: x方向的內邊距

 ipady: y方向的內邊距 

from tkinter import *
root = Tk()
Button(root,text='G').pack(anchor=E,padx=20)
root.mainloop()

 


 grid 布局

 grid 函數也支持諸如 ipadx,ipady,padx,pady,它們 的意思和 pack 函數是一樣的,默認邊距是 0;

 grid 布局是網格格式 ,用 row 表示行,用 column 表示列,其中值得 注意的是 row 和 column 的編號都從 0 開始

 grid 參數 

  row 表示行

  column 表示列  

  sticky:它決定了這個組件是從哪個方向開始的

    N:北 上、E:東 右、S:南 下、W:西 左

  rowspan :  跨越(合並)的行數

  columnspan:  跨越(合並)的列數

from tkinter import *

tk=Tk()
var=IntVar()

#標簽控件,顯示文本和位圖,展示在第一行
Label(tk,text="First").grid(row=0,sticky=E)#靠右
Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左

#輸入控件
Entry(tk).grid(row=0,column=1,padx=10,pady=10)
Entry(tk).grid(row=1,column=1)

#多選框插件
button=Checkbutton(tk,text="Precerve aspect",variable=var)
button.grid(row=2,columnspan=2,sticky=W)

#插入圖片
photo=PhotoImage(file="wm.png")
label=Label(image=photo)
label.grid(row=0,column=2,rowspan=2,columnspan=2,
           sticky=W+E+N+S, padx=5, pady=5)#合並兩行,兩列,居中,四周外延5個長度

#按鈕控件
button1=Button(tk,text="Zoom in")
button1.grid(row=2,column=2)
button2=Button(tk,text="Zoom out")
button2.grid(row=2,column=3)


#主事件循環
mainloop()

 


 

place 布局

  place 最簡單最靈活的一種布局,使用組件坐標來放置組件的位置。但是不太推薦使用,在不同分辨率下,界面往往有較大差異。  

  place 參數   

anchor:位置,默認值為 NW 同pack布局 

x、y: 組件左上角的x、y坐標 整數,默認值0 絕對位置坐標,單位像素

relx、rely :組件相對於父容器的x、y坐標 0~1之間浮點數 相對位置,0.0表示左邊緣(或上邊緣),1.0表示右邊緣(或下邊緣)

width、height :組件的寬度、高度 非負整數 單位像素

relwidth、relheight :組件相對於父容器的寬度、高度 0~1之間浮點數 與relx(rely)取值相似

bordermode: 如果設置為INSIDE,組件內部的大小和位置是相對的,不包括邊框;如果是OUTSIDE,組件的外部大小是相對的,包括邊框 INSIDE、OUTSIDE(默認值INSIDE) 可以使用常量INSIDE、OUTSIDE,也可以使用字符串形式”inside”、”outside”

from tkinter import *
root = Tk()
Button(root,text='G').place(x=20,y=30,width=30,height=40,bordermode=INSIDE)
root.mainloop()

 

 相關文章:Python GUI之tkinter布局管理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM