Python GUI編程學習筆記之tkinter界面布局顯示詳解
本文實例講述了Python GUI編程學習筆記之tkinter界面布局顯示。分享給大家供大家參考,具體如下:
相關內容: pack 介紹 常用參數 使用情況 常用函數 grid 介紹 常用參數 使用情況 常用函數 place 介紹 常用參數 使用情況 常用函數首發時間:2018-03-04 14:20
pack: 介紹: pack幾何管理器按行或列打包小部件。 可以使用填充fill,展開expand和靠邊side等選項來控制此幾何體管理器。 pack的排放控件的形式就像將一個個控件按大小從上到下放過去





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可以將控件區塊式擺放. 常用參數: row: 行號,區分不同控件是否處于同一行 column: 列號,區分不同控件是否處于同一列 sticky: 決定控件的貼靠方向,該選項從集合N,S,E,W [東南西北的意思],中取一個或多個值。比如要將標簽與左邊框對齊,可以使用W(西)
rowspan:行跨度,決定某個控件占的行數 ,默認一行 columnspan:列跨度,決定某個控件占的列數,默認一列 ipadx, ipady:內邊距 padx,pady:外邊距 適用情況: 設計對話框的時候特別方便
區塊化擺放的時候 補充: 常用函數: grid_forget :移除控件,但并沒有進行摧毀,可以再次使用grid或其他方式來顯示 [grid_remove有同樣作用]
grid_propagete
:由窗口調用來配置pack控件時窗口的大小,當flag=0時,那么窗口大小將不再僅僅包裹住所有控件,這時候窗口的高度和寬度設置才可以生效grid_slaves():以列表方式返回本組件的所有子組件對象。
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,stickylabel_user.grid(row=0,column=0,sticky=W) #一個有sticky,一個沒有sticky,以作區分label_pwd.grid(row=1,column=0)# rowspan,columnspanuser.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)# 下面主要是將第一列拉大來顯示上面sticky的效果v=IntVar()check=Checkbutton(text='下次自動登錄',variable=v,)check.grid(row=2,column=0,sticky=W)# _forget:import time,threadinglabel=Label(text='歡迎登錄!',bg=’blue’)label.grid()def run(): start_time=time.time() while True: if time.time()-start_time>3: label.grid_forget() breakt=threading.Thread(target=run)t.setDaemon(True)t.start()root.mainloop()place: 介紹:可以使用絕對的位置或相對位置來擺放控件。
常用參數: x:控件在窗口中的x坐標 y:控件在窗口中的y坐標
relx,rely:與主窗口的相對位置,比如
relwidth,relheight:相對大小,比如height=0.5,width=0.5時控件占據窗口的四分之一大小 適用情況: 自定義顯示方式 將按鈕定位在對話框中 補充: 常用函數: place_forget():移除控件,但并沒有進行摧毀,可以再次使用place或其他方式來顯示place_slaves():以列表方式返回本組件的所有子組件對象。[slaves()具有同樣功能]place_info():返回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,threadinglabel2=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() breakt=threading.Thread(target=run)t.setDaemon(True)t.start()root.mainloop()
想要了解更多,可以參考tkinter的官方文檔:http://effbot.org/tkinterbook/
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python Socket編程技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
相關文章: