python圖形界面開發之tkinter-布局


布局

任何界面都有自己的布局風格,有些是橫向布局,有些是縱向布局,有些是流水布局,還有些是網格布局,總之布局就是一種考慮如何放置元素或者組件的一種說明方式。

包裹(包裝)布局

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是用來設置距離左右上下的位置的,有了他們,我們就可以靈活設置組件的布局了

第二個按鈕設置為fill=tk.X

設置左右side

設置了pdx為20,距離兩側有20像素

柵格布局(網格布局)

tkinter還有一種布局叫做grid布局,就是我們常說的網格布局。

grid有4個可選參數,分別是row,rowspan,column,columnspan,sticky

  • row指的是排在第一行
  • rowspan指的是占有多少行
  • column指的是排在第幾列
  • columnspan指的是占有幾列
  • sticky粘性,指的就是對齊固定方式,有nswe4個方位,分別是上北下南左西右東(n=nouth,s=south,e=east,w=west)

這個圖片表示button1占有2行1列,button2是row=0,column=1,button3是row=1,column=1

使用sticky='ns'來使它上下對齊

坐標布局

坐標布局使用place進行元素的位置放置,它有x,y兩參數,可以用來指定距離父組件的左上角的橫坐標距離和縱坐標距離。

可以說相對其它布局,它是最靈活的,也是最精准的,只要給出x,y我們可以精確的放置到任何想要的位置,但是因為需要計算距離,所以相對來說也更麻煩一些。

image-20200328124438300

總結

tkinter為我們提供了三種布局,可以說每種布局都有自己的特點,pack相對用戶來說不需要做過多操作就可以自動元素排列,適合於粗狂的布局,也就是整體布局。

grid布局相對來說有板有眼,適合那種規規矩矩的布局,類似於磁鐵布局。

place布局適合那種對細節要求嚴絲合縫的場合。

三種布局不是孤立的,但是grid和pack不要同時使用。它們兩個可以分別和place配合使用。

正式有了布局系統的存在,我們才可以設計出任何我們想要的排版,可以說只有弄清楚了布局系統,才算是對tkinter入門了。


免責聲明!

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



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