布局
任何界面都有自己的布局風格,有些是橫向布局,有些是縱向布局,有些是流水布局,還有些是網格布局,總之布局就是一種考慮如何放置元素或者組件的一種說明方式。
包裹(包裝)布局
thinter中使用pack進行包裹布局。
widgets.pack(pack_options) 這個是函數原型,pack_options有三個常用屬性,分別是expand ,fill,side這三個屬性
- expand 是否擴展,當它設置為true的時候,它會沾滿父組件的空間,當然,這是在其它同級元素布局剩下之后的空間。
- fill 是填充的意思,它可以指定填充的方向,比如我們想要一個button或者label占滿一行,我們可以就可以設置fill = tk.X (其中tk是tkiner的簡寫,import tkinter as tk)
- side是一側的意思,比如我們要讓兩個button並排顯示可以一個設置side=tk.LEFT,一個設置為tk.RIGHT
- pdx,pdy是用來設置距離左右上下的位置的,有了他們,我們就可以靈活設置組件的布局了
柵格布局(網格布局)
tkinter還有一種布局叫做grid布局,就是我們常說的網格布局。
grid有4個可選參數,分別是row,rowspan,column,columnspan,sticky
- row指的是排在第一行
- rowspan指的是占有多少行
- column指的是排在第幾列
- columnspan指的是占有幾列
- sticky粘性,指的就是對齊固定方式,有nswe4個方位,分別是上北下南左西右東(n=nouth,s=south,e=east,w=west)
坐標布局
坐標布局使用place進行元素的位置放置,它有x,y兩參數,可以用來指定距離父組件的左上角的橫坐標距離和縱坐標距離。
可以說相對其它布局,它是最靈活的,也是最精准的,只要給出x,y我們可以精確的放置到任何想要的位置,但是因為需要計算距離,所以相對來說也更麻煩一些。
總結
tkinter為我們提供了三種布局,可以說每種布局都有自己的特點,pack相對用戶來說不需要做過多操作就可以自動元素排列,適合於粗狂的布局,也就是整體布局。
grid布局相對來說有板有眼,適合那種規規矩矩的布局,類似於磁鐵布局。
place布局適合那種對細節要求嚴絲合縫的場合。
三種布局不是孤立的,但是grid和pack不要同時使用。它們兩個可以分別和place配合使用。
正式有了布局系統的存在,我們才可以設計出任何我們想要的排版,可以說只有弄清楚了布局系統,才算是對tkinter入門了。