python圖形界面tkinter布局那些事

布局

任何界面都有自己的布局風(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è)置組件的布局了
python圖形界面tkinter布局那些事
python圖形界面tkinter布局那些事
python圖形界面tkinter布局那些事

柵格布局(網(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)
python圖形界面tkinter布局那些事
python圖形界面tkinter布局那些事

坐標(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ō)也更麻煩一些。

python圖形界面tkinter布局那些事

總結(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)了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容