Python GUI編程學(xué)習(xí)筆記之tkinter界面布局顯示詳解
本文實(shí)例講述了Python GUI編程學(xué)習(xí)筆記之tkinter界面布局顯示。分享給大家供大家參考,具體如下:
相關(guān)內(nèi)容:
- pack
- 介紹
- 常用參數(shù)
- 使用情況
- 常用函數(shù)
- grid
- 介紹
- 常用參數(shù)
- 使用情況
- 常用函數(shù)
- place
- 介紹
- 常用參數(shù)
- 使用情況
- 常用函數(shù)
首發(fā)時(shí)間:2018-03-04 14:20
pack:
- 介紹:
- pack幾何管理器按行或列打包小部件。 可以使用填充fill,展開(kāi)expand和靠邊side等選項(xiàng)來(lái)控制此幾何體管理器。
- pack的排放控件的形式就像將一個(gè)個(gè)控件按大小從上到下放過(guò)去
- 在窗口不設(shè)定大小的而使用pack進(jìn)行布局的情況下,窗口默認(rèn)大小為剛好包裹所有控件的大小
- 默認(rèn)情況下添加的控件是居中且占據(jù)整行的
- 常用參數(shù):
- fill:填充分配給控件的空間,fill:X為填充X軸方向,Y為Y軸方向,BOTH為X+Y
- expand:先按普通標(biāo)準(zhǔn)來(lái)規(guī)定控件大小,如果后面窗口還剩下空間,那么會(huì)分給那些expand=True的控件,如圖中是兩個(gè)不同大小的按鈕,其中2expand=True
,當(dāng)使用expand=True時(shí),side將不會(huì)生效!
- side:使控件靠窗口的指定方向并排,side可取值LEFT,RIGHT,TOP,BOTTOM.
- anchor:對(duì)齊方式,可取值“n”, “s”, “w”, “e”, “nw”, “sw”, “se”, “ne”, “center”(默認(rèn)為” center”)
- ipadx, ipady:內(nèi)邊距
- padx,pady:外邊距
- fill:填充分配給控件的空間,fill:X為填充X軸方向,Y為Y軸方向,BOTH為X+Y
- 適用情況:與gird相比,pack有一定的局限性,但在一些但很常見(jiàn)的情況下使用起來(lái)要容易得多:
- 將一個(gè)小部件放入一個(gè)框架(或任何其他容器小部件)中,并讓它填充整個(gè)框架
- 將多個(gè)小部件放在一起
- 并排放置一些小部件
- 補(bǔ)充:
- 常用函數(shù):
- pack_propagate(flag):由窗口調(diào)用來(lái)配置pack控件時(shí)窗口的大小,當(dāng)flag=0時(shí),那么窗口大小將不再僅僅包裹住所有控件,這時(shí)候窗口的高度和寬度設(shè)置才可以生效
- pack_forget():移除控件,但并沒(méi)有進(jìn)行摧毀,可以再次使用pack或其他方式來(lái)顯示
- pack_info():返回pack提供的選項(xiàng)所對(duì)應(yīng)得值。
- pack_slaves():以列表方式返回本組件的所有子組件對(duì)象。
- 常用函數(shù):
from tkinter import * root=Tk() # for i in range(10): ##side # btn = Button(text=i) # btn.pack(side=LEFT) # btn.pack(side=RIGHT) # btn.pack(side=(TOP,LEFT)) ####fill # btn.pack(fill=X) # btn.pack(side=LEFT,fill=Y) # btn.pack(fill=BOTH) ##expand # btn1=Button(text=1,bg='green') # btn2=Button(text=2,bg='yellow') # btn1.pack(fill=X) # btn2.pack(expand=True) #anchor: # btn1=Button(text=1,bg='green') # btn2=Button(text=2,bg='yellow') # btn1.pack(fill=X) # btn2.pack(anchor=E) #pack_propagete # btn1=Button(text=1,bg='green') # btn2=Button(text=2,bg='yellow') # root.pack_propagate(0) # btn1.pack() # btn2.pack() #pack_forget: # import time,threading # label=Label(text="警告!") # label.pack() # def run(): # start_time=time.time() # while True: # if time.time()-start_time>3: # label.pack_forget() # break # t=threading.Thread(target=run) # t.setDaemon(True) # t.start() root.mainloop()
grid:
- 介紹:grid是格子的意思,grid可以將控件區(qū)塊式擺放.
- 常用參數(shù):
- 適用情況:
- 設(shè)計(jì)對(duì)話框的時(shí)候特別方便
- 區(qū)塊化擺放的時(shí)候
- 設(shè)計(jì)對(duì)話框的時(shí)候特別方便
- 補(bǔ)充:
- 常用函數(shù):
- grid_forget :移除控件,但并沒(méi)有進(jìn)行摧毀,可以再次使用grid或其他方式來(lái)顯示 [grid_remove有同樣作用]
-
grid_propagete
:由窗口調(diào)用來(lái)配置pack控件時(shí)窗口的大小,當(dāng)flag=0時(shí),那么窗口大小將不再僅僅包裹住所有控件,這時(shí)候窗口的高度和寬度設(shè)置才可以生效 -
grid_slaves():以列表方式返回本組件的所有子組件對(duì)象。
- 常用函數(shù):
from tkinter import * root=Tk() root.title("我的窗口") label_user=Label(text='用戶名:',bg='green') label_pwd=Label(text='密碼:',bg='green') user=Entry() pwd=Entry() # row,column,sticky label_user.grid(row=0,column=0,sticky=W) #一個(gè)有sticky,一個(gè)沒(méi)有sticky,以作區(qū)分 label_pwd.grid(row=1,column=0) # rowspan,columnspan user.grid(row=0,column=1) pwd.grid(row=1,column=1) btn=Button(text="提交") btn.grid(row=0,column=3,rowspan=2,columnspan=2,padx=5, pady=5) # 下面主要是將第一列拉大來(lái)顯示上面sticky的效果 v=IntVar() check=Checkbutton(text="下次自動(dòng)登錄",variable=v,) check.grid(row=2,column=0,sticky=W) # _forget: import time,threading label=Label(text="歡迎登錄!",bg='blue') label.grid() def run(): start_time=time.time() while True: if time.time()-start_time>3: label.grid_forget() break t=threading.Thread(target=run) t.setDaemon(True) t.start() root.mainloop()
place:
from tkinter import * root=Tk() root.geometry('100x100') label=Label(text="用戶名:",bg='green') entry=Entry() label.pack(fill=X) #x,y # entry.place(x=0,y=0) #relx,rely # entry.place(relx=0.3, rely=0.3) # entry.place(relx=0.5, rely=0.5) #relheight,relwidth # entry.place(relx=0.5, rely=0.5,relheight=0.5,relwidth=0.5) #_forget: import time,threading label2=Label(text="警告!",bg='blue') label2.place(relx=0.2,rely=0.2) def run(): start_time=time.time() while True: if time.time()-start_time>3: label2.place_forget() break t=threading.Thread(target=run) t.setDaemon(True) t.start() root.mainloop()
想要了解更多,可以參考tkinter的官方文檔:http://effbot.org/tkinterbook/
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python中super()的理解以及應(yīng)用場(chǎng)景實(shí)例
在python中關(guān)于類的定義可以分為兩種:老式類&新式類,在新式類中有這么一種方法super( ),下面這篇文章主要給大家介紹了關(guān)于Python中super()的理解以及應(yīng)用場(chǎng)景的相關(guān)資料,需要的朋友可以參考下2021-09-09Python+request+unittest實(shí)現(xiàn)接口測(cè)試框架集成實(shí)例
這篇文章主要介紹了Python+request+unittest實(shí)現(xiàn)接口測(cè)試框架集成實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03Python動(dòng)態(tài)演示旋轉(zhuǎn)矩陣的作用詳解
一個(gè)矩陣我們想讓它通過(guò)編程,實(shí)現(xiàn)各種花樣的變化怎么辦呢?下面這篇文章主要給大家介紹了關(guān)于Python動(dòng)態(tài)演示旋轉(zhuǎn)矩陣的作用,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12Python中easy_install 和 pip 的安裝及使用
本篇文章主要介紹了Python中easy_install 和 pip 的安裝及使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Python猴子補(bǔ)丁知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家分享的是關(guān)于Python猴子補(bǔ)丁知識(shí)點(diǎn)總結(jié),需要的朋友們學(xué)習(xí)下。2020-01-01Python實(shí)現(xiàn)文件按照日期命名的方法
這篇文章主要介紹了Python實(shí)現(xiàn)文件按照日期命名的方法,涉及Python針對(duì)文件的遍歷、讀寫(xiě)及時(shí)間操作相關(guān)技巧,需要的朋友可以參考下2015-07-07python實(shí)現(xiàn)經(jīng)典排序算法的示例代碼
這篇文章主要介紹了python實(shí)現(xiàn)經(jīng)典排序算法的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02