<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文講述如何使用 tkinter 的佈局管理 (被稱作 layout managers 或 geometry managers). tkinter 有三種佈局管理方式:
pack
grid
place
注意這三種佈局管理在同一個 master window 裡一定不可以混用! 佈局管理有以下功能:
雖然控制元件自己也可以指定大小和對齊方式等資訊, 但最終的控制元件大小及位置還是由佈局管理決定的.
pack 是三種佈局管理中最常用的. 另外兩種佈局需要精確指定控制元件具體的顯示位置, 而 pack 佈局可以指定相對位置, 精確的位置會由 pack 系統自動完成. 這也使得 pack 佈局沒有另外兩種佈局方式靈活. 所以 pack 是
簡單應用的首選佈局
fill 控制元件填充方式
設定元件之間的間隙大小
ipadx
,ipady
設定內部間隙padx
,pady
設定外部間隙side
順次放置控制元件Place 佈局管理可以顯式的指定控制元件的絕對位置或相對於其他控制元件的位置. 要使用 Place 佈局, 呼叫相應控制元件的 place() 方法就可以了. 所有 tkinter 的標準控制元件都可以呼叫 place()方法.
下面是一個使用 Place 佈局的例子: 為 Label 控制元件設定隨機的背景色, 然後計算各個 Label 的背景色的亮度(灰度值), 如果其亮度小於 120, 則將其前景色(文字顏色, fg屬性)設定為白色, 否則設為黑色. 這樣做是為了避免使背景色和前景色過於接近而導致文字不易閱讀
Pack 作為首選的佈局管理方式,其運作方式並不是特別易於理解. 已經由 Pack 佈局完成的設計也很難做出改變. Grid 佈局在1996年作為另一種可供選擇的佈局方式被引入. Grid 佈局方式易學易用, 但似乎大家還是習慣用 Pack.
Grid 在很多場景下是最好用的佈局方式.相比而言, Pack 佈局在控制細節方面有些力不從心. Place 佈局雖然可以完全控制控制元件位置, 但這也導致使用 Place 會比其他兩種佈局方式更加複雜.
Grid 把控制元件位置作為一個二維表結構來維護,即按照行列的方式排列控制元件: 控制元件位置由其所在的行號和列號決定. 行號相同而列號不同的幾個控制元件會被彼此上下排列; 列號相同而行號不同的幾個控制元件會被彼此左右排列.
使用 Grid 佈局的過程就是為各個控制元件指定行號和列號的過程. 不需要為每個格子指定大小, Grid 佈局會自動設定一個合適的大小.
pack打包的步驟如下:
由此可見,pack選項執行的順序為side>expand>fill/anchor。
fill與anchor選項必須在元件分配到所在空間,完成打包順序,expand要求後才可使用。
打包過程中,pack的順序很重要。注意其中因為父視窗縮小而產生的裁切問題:先打包的最後被裁切。(從技術上講,視窗尺寸改變後優惠執行打包步驟。這意味著,在視窗縮小時,將沒有足夠的空間留給最後打包的元件,看上去就像最先打包的元件最後被裁切掉)
觀察以下兩個程式碼因視窗縮小時產生的不同效果:
#我們只關注裁切問題 from tkinter import * def greeting(): print('Hello stdout world!...') win = Frame() win.pack(expand=YES,fill=BOTH) Button(win, text='Hello', command=greeting).pack() Label(win, text='Hello container world').pack(side=TOP)#side選項使該標籤位於頂部 win.mainloop()
可以看到視窗縮小時由於裁切問題而產生結果是這樣的,明顯是label先被擠出去,因為label標籤後被打包
from tkinter import * def greeting(): print('Hello stdout world!...') win = Frame() win.pack(expand=YES,fill=BOTH) Label(win, text='Hello container world').pack(side=TOP)#side選項使該標籤位於頂部 Button(win, text='Hello', command=greeting).pack() win.mainloop()
可以看到視窗縮小時由於裁切問題而產生結果是這樣的,因為Button標籤後被打包。
***因此:打包順序將對剪下結果產生影響***
side
:決定獲得剩餘空間的某一側(可選LEFT,RIGHT,TOP,BOTTOM),預設為TOP;expand
:拓衝分配所得空間(可選NO,YES),預設為NO;fill
:填充分配所得空間(可選Y,X,BOTH),預設為None;anchor
:定位元件在分配所得空間中的位置(預設為CENTER;可選N,S,W,E,NW,NE,SW,SE),預設為CENTER。以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45