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